2016-11-14 2 views
0

Ich habe das folgende button_click Ereignis, welches Elemente zu einer Listbox hinzufügt. Weil es ungefähr 30 Knöpfe gibt, deren Text ich zur Listbox hinzugefügt werden muss. Wie verallgemeinere ich in Form einer Funktion oder eines Ereignisses, so dass der Benutzer eine beliebige Zifferntaste von 1 bis 30 anklickt, sollte die Elementschaltfläche (i) .text zur Listbox hinzugefügt werden. im folgenden Beispiel button1_click add button1.text. i want Taste (i) _CLICK Schaltfläche hinzufügen (i) .text Box aufzuzählen, in denen i = 1 bis 30.
dankVerallgemeinern Button (i) _click um Button (i) zu erhalten .text

private void button1_Click(object sender, EventArgs e) 
    { 
     listBox1.Items.Insert(0, " "); 

     if ((checkBox_pickup.CheckState != 0) && (checkBox_family.CheckState != 0)) 
     { 
      listBox1.Items.Insert(1, listBox1.Items.Count); 
      listBox1.Items.Insert(2, "PICKUP"); 
      listBox1.Items.Insert(3, textBox2.Text); 
      listBox1.Items.Insert(4, textBox1.Text); 
      listBox1.Items.Insert(5, "Family"); 


      listBox1.Items.Insert(5, button1.Text); 

      listBox1.Items.Insert(6, DateTime.Now.ToString()); 
      listBox1.Items.Insert(listBox1.Items.Count, textBox4.Text); 
+1

Wenn Sie den Absender an ein Button-Objekt übergeben, steht Ihnen die Eigenschaft Name und Text der Schaltfläche zur Verfügung: 'Schaltfläche b = Absender als Schaltfläche;' – LarsTech

Antwort

0

Sie sollten wahrscheinlich "eigenen" Button-Klasse (bedeutet eine Klasse schreiben das erbt von Button).

In dieser Klasse sollte eine ID vorhanden sein, die bei der Initialisierung gesetzt werden muss.

Vielleicht klingt schwer, aber eigentlich ist es eine sehr einfache Aufgabe.

https://msdn.microsoft.com/en-us/library/7h62478z(v=vs.110).aspx

0

Angenommen, Sie Ihre 30 Tasten mit einem Code wie in der

  Button[] btns=new Button[30]; 
      for (int ii = 0; ii <30; ii++) 
      { 
       btns[ii] = new Button(); 
      //and then you adjust their properties.... 
      // btns[ii].FlatStyle =... 
      // btns[ii].Width = ... 
      // btns[ii].Top = ...... 
      //.......etc 
      // 
       btns[ii].Tag=ii; 
       btns[ii].Click += new EventHandler(presd_btn); 
       } 

folgenden erstellen dann Sie zum Beispiel auf diesen Code ein Eventhandler namens hinzufügen presd_btn und dem Tag der Schaltfläche den Index z. ii (zum Zählen von 0,1, 29) oder ii + 1 (zum Zählen von 1,2, ... 30). Dann können Sie auf die Taste, die gedrückt wurde, zugreifen und diese erkennen, indem Sie ihre Tag-Nummer im presd_btn neuen Klick EventHandler lesen.

Der Eventhandler kann wie in der folgenden

sein
 private void presd_btn(object sender, EventArgs e) 
     { 
     Button mybutn = sender as Button; 
     int btnum=mybutn.Tag; 
     listBox1.Items.Insert(0, " "); 

     if ((checkBox_pickup.CheckState != 0) && (checkBox_family.CheckState != 0)) 
     { 
     listBox1.Items.Insert(1, listBox1.Items.Count); 
     listBox1.Items.Insert(2, "PICKUP"); 
     listBox1.Items.Insert(3, textBox2.Text); 
     listBox1.Items.Insert(4, textBox1.Text); 
     listBox1.Items.Insert(5, "Family"); 

      //and here you assign the pressed button's text 
     listBox1.Items.Insert(5, mybtn.Text); 

     listBox1.Items.Insert(6, DateTime.Now.ToString()); 
     listBox1.Items.Insert(listBox1.Items.Count, textBox4.Text); 
     //...... 
     } 

Hoffe, dass diese Hilfe.

Verwandte Themen