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.
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?
auf MSDN Control.PreviewKeyDown-Ereignis steht folgendes
Zitat
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.
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.