guten morgen!
ich müsste beim klick auf einen button ein bestimmten string z.b. "x" an das zuvor aktive steuerelemet schicken, da bei button klick ja der button zum activen steuerelement wird.
nun kann ich aber das element an das der string gesendent werden soll nicht einfach benennen z.b.
textbox1.Focus();
SendKeys.Send("x");
funktioniert nicht da die textbox erst zur laufzeit erstellt wird.
jemand eine idee?
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
naja, aber du vergibst ja vermutlich namen für deine controls wenn du sie erstellst. dann kannst du so vorgehen:
form.Controls["textBoxName"].Focus();
das schon aber woher weiß ich denn welches control vorher aktiv war?
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
keiner?
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
wenns dafür keine methode gibt bastel dir doch nen Trigger der den Namen/ID des zuletzt aktiven Steuerelement speichert.
das ist genau das was ich machen möchte aber in welcher property kann ich denn das active steuerlement abfrage?
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
leider hab ich gerade keine IDE vorliegen.... aber evtl. gibt es was unter this.Controls zu finden.
Ausm Kopf würde ich sagen... müsstest du die eine Methode schreiben die du dann in dem click event aufrufst. In dieser müsstest du über den sender das object bekommen und dementsprechend auch den namen bzw. die ID.
Klingt für mich bischen umständlich weshalb du evtl. noch auf andere antworten warten solltest 😉
mfg
so in die richtung hab ich auch gedacht...
ich wollte event bei maus enter auslösen welches per getter setter das zu dem zeitpunkt aktive steuerelement speichert
und dann bei click jenes anspricht aber ich finde einfach keine möglichkeit das active control abzufragen )-:
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
//speichert den Namen der Control als string
private string lastControl = "";
public Form1()
{
InitializeComponent();
textboxenErstellen();
}
//Knopf, der Aktion auslöst
private void button1_Click(object sender, EventArgs e)
{
if (lastControl != "")
{
//der Name des zulest aktiven Controls wird abgerufen
this.Controls[lastControl].Select();
SendKeys.Send("x");
}
}
//Die Controls, die den Befehl vom Knopfdruck entegennehmen können sollen
//Event bei verlassen der Maus (wenn das Objekt vorher auch selektiert wurde)
private void Control_MouseLeave(object sender, EventArgs e)
{
Control c = (Control)sender;
if (c == this.ActiveControl) this.lastControl = c.Name;
}
private void textboxenErstellen()
{
//neue Textbox erstellen
TextBox t = new TextBox();
//Position und Größe definieren
t.Location = new System.Drawing.Point(80, 160);
t.Size = new System.Drawing.Size(100, 20);
//Namen geben und Event festlegen
t.MouseLeave += new System.EventHandler(this.Control_MouseLeave);
t.Name = "tb1";
//Textbox zu Controls der aktiven Form hinzufügen
this.Controls.Add(t);
//neue Textbox erstellen
t = new TextBox();
//Position und Größe definieren
t.Location = new System.Drawing.Point(80, 30);
t.Size = new System.Drawing.Size(100, 20);
//Namen geben und Event festlegen
t.MouseLeave += new System.EventHandler(this.Control_MouseLeave);
t.Name = "tb2";
//Textbox zu Controls der aktiven Form hinzufügen
this.Controls.Add(t);
}
yes! thats it, du bist mein kumpel!!
das ist genau was ich gesucht hab!
Control c = (Control)sender;
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Statt lastControl könntest Du aber auch direkt eine Referenz auf das Control speichern (Control c = (Control)sender😉
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
danke an alle. funktioniert!
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."