Laden...

Forenbeiträge von Falk82 Ingesamt 7 Beiträge

29.07.2016 - 09:50 Uhr

Hallo Zusammen,

ich habe folgendes Problem.
Ich habe ein Windowsform mit zwei Buttons und einen Panel. Wenn Button 1 gedrückt wird, wird ein UserControl zu dem Panel hinzugefügt. Wenn Button 2 gedrückt wird, wird das UserControl wieder vom Panel entfernt und dispost.
Leider wird der Speicher der vom UserControl belegt wird nicht wieder freigegeben.
Wenn ich mit dem Diagnosetools eine Momentaufnahme des Speichers mache finde ich mein UserControl noch im Verwaltetem Speicher 🙁 mit einen Versweis auf LayoutEventArgs.

Was kann ich machen das mein UserControl aus dem Speicher entfernt wird?

Hier noch mein SourceCode:

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Control akt;

        public Form1()
        {
            InitializeComponent();
        }

       
        private void button1_Click(object sender, EventArgs e)
        {
            akt = new UserControl1();
            akt.Dock = DockStyle.Fill;
            akt.Name = "Test";
            this.panel1.Controls.Add(akt);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.panel1.Controls.Remove(akt);
            akt.Dispose();

            akt = null;
        }
    }
}

Als Anhang noch ein Screenshot der Momentaufnahme des Speichers.

Vielen Danke für Eure Hilfe.

11.08.2015 - 07:55 Uhr

Hallo Zusammen,

vielen Dank für die schnelle Hilfe.

Ich habe das Problem jetzt wie folgt gelöst.

Ich rufe die Method Validate() auf (this.Validate()).

Gruß Falk82

10.08.2015 - 13:05 Uhr

Hallo Zusammen,

ich habe folgendes Problem: Ich habe eine DataGridView mit einer gebundenen DataTable.
Wenn ich eine neue Zeile in der DGV erzeuge und den Focus nicht von dieser Zeile nehme, hat die gebundene DataTable keine neue Zeile.

Nun meine Frage: Wie kann ich die Daten aus der aktuellen Zeile der DataGridView in die gebundene DataTable übernehmen?

25.10.2013 - 10:10 Uhr

Hallo herbivore,

auf MSDN Control.PreviewKeyDown-Ereignis steht folgendes

Sie sollten dem PreviewKeyDown-Ereignishandler keine Logik hinzufügen. Es sollte nur die IsInputKey-Eigenschaft festgelegt werden. Stattdessen sollten Sie die Logik in den KeyDown-Ereignishandler setzen.

des halb wollte ich im PreviewKeyDown keine Logik hinzufügen.

Falk82

25.10.2013 - 08:06 Uhr

Hallo herbivore,

ich habe Form.KeyPreview auf "true" gesetzt und Form.PreviewKeyDown und Form.KeyDown
implementiert aber die "Down" Taste kommt auch da nicht an.


private void OfficeNew0_ParentChanged(object sender, EventArgs e)
{
	Form form = this.dgv_pickUpAddress.FindForm();
	form.KeyPreview = true;
	form.KeyDown += new KeyEventHandler(form_KeyDown);
	form.PreviewKeyDown += new PreviewKeyDownEventHandler(form_PreviewKeyDown);
}

void form_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
	Console.WriteLine("form_PreviewKeyDown: " + sender.ToString() + " " + e.KeyCode.ToString());
}

void form_KeyDown(object sender, KeyEventArgs e)
{
	Console.WriteLine(sender.ToString() + " " + e.KeyCode.ToString());
	
}

Haben Sie noch eine Idee?

Vielen Dank

24.10.2013 - 15:32 Uhr

Hallo herbivore

ja er geht ins PreviewKeyDown.

24.10.2013 - 15:02 Uhr

Hallo Ich habe ein Problem mit dem KeyDown Event.
Wenn ich in der DataGridView in eine Zelle im Bearbeitungsmodus bin bekomme ich den KeyDownEvent von der "Down Taste" nicht.

Ich habe folgendes ausprobiert:

private void dgv_pickUpAddress_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            e.Control.TextChanged += new EventHandler(SearchAddress);
            e.Control.PreviewKeyDown -= new PreviewKeyDownEventHandler(Control_PreviewKeyDown);
            e.Control.PreviewKeyDown += new PreviewKeyDownEventHandler(Control_PreviewKeyDown);
            e.Control.KeyUp += new KeyEventHandler(DataGridView_KeyDown);
            
            
        }

        void Control_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            Console.WriteLine(e.KeyCode.ToString() + ": " + e.IsInputKey.ToString());
            switch (e.KeyCode)
            {
                case Keys.Down:
                    e.IsInputKey = true;
                    break;
            }
        }

        void DataGridView_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Down)
            {
                this.searchResultList.SelectNextRow();
            }
            else if (e.KeyCode == Keys.Up)
            {
                this.searchResultList.SelectPreviousRow();
            }
            else if (e.KeyCode == Keys.Enter)
            {

            }
        }

Wenn ich einen Haltepunkt in die Methode "DataGridView_KeyDown" setze hält das Programm an wenn ich irgend ein Buchstabe drücke aber wenn ich die "Down" Taste drücke passiert nichts.

Ich komme hier nicht weiter.
Ich bin für jede Hilfe dankbar.