Entwickler-Ecke

Basistechnologien - Textboxen Variabelen zuordnen


cinos - Sa 11.12.10 12:03
Titel: Textboxen Variabelen zuordnen
Hallo,

erst mal: Hallo an alle ;) Super Forum hier :)

So. Jetzt zu meinem Problem:
Entweder bin ich zu dumm oder hab ein Brett vorm Kopf:
Ich habe 242 TextBoxen. Jede TextBox soll einer String Variabel zugeordnet werden. Ein bisschen schwer zu erklären... Wenn ich die Variabele ändere, soll sich der Text in der TextBox ändern. Wenn ich aber die TextBox änder soll sich die Variabele ändern. Wie lös ich das am besten?

Lg cinos

Ps: Ich bin blutiger Anfänger. Also nehmt mich bitte nicht gleich auseinander :)


jaenicke - Sa 11.12.10 13:07

Hallo und :welcome:

user profile iconcinos hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe 242 TextBoxen.
Das ist ja schon einmal das Hauptproblem. Nämlich das eines wahrscheinlich schlechten Konzepts. Das lässt sich eigentlich immer besser umsetzen als mit einer derart hohen Anzahl an Eingabefeldern...

user profile iconcinos hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich die Variabele ändere, soll sich der Text in der TextBox ändern.
Ändere nicht nur die Variable, sondern auch die TextBox.

user profile iconcinos hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich aber die TextBox änder soll sich die Variabele ändern.
Reagiere auf das Ereignis TextChanged und packe da den Text in die Variable.


cinos - Sa 11.12.10 13:21

Danke erstmal ;)

Warum so viele Boxen? Screenshot ist im Anhang (bisschen was hab ich aber unkentlich gemacht :D). Ist zwar nicht DIE Lösungs des Jahrhunderts, funktioniert aber...

Ich werd mal versuche das alles hübsch in einer Schleife zu verpacken (wahrscheinlich scheiterts bei mir wieder an "this.Controls". Ich bin da irgendwie zu dumm zu :D

Lg cinos


Yogu - Sa 11.12.10 13:51

Du könntest dir mal die Klassen DataGridView [http://msdn.microsoft.com/de-de/library/system.windows.forms.datagridview%28v=VS.100%29.aspx] und ListView [http://msdn.microsoft.com/de-de/library/system.windows.controls.listview.aspx] anschauen.


Trashkid2000 - So 12.12.10 11:43

Hallo,

ja, mit den vielen Textboxen ist wirklich nicht so optimal. Da wäre ein DataGridView oder so wirklich angebracht.
Aber wenn es so bleiben soll/muss, dann könntest Du auch mit Bindings arbeiten. Das würde dann in etwa so aussehen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
public partial class Form1 : Form, INotifyPropertyChanged
{
  private string tb1Text = null;
  public string Tb1Text 
  {
    get { return tb1Text; }
    set 
    {
      if (tb1Text != value)
      {
        tb1Text = value;
        NotifyPropertyChanged("Tb1Text");
      }
    }
  }

  public Form1()
  {
    InitializeComponent();
    InitializeTextBoxes();
  }

  private void InitializeTextBoxes()
  {
    TextBox tb = new TextBox();
    tb.DataBindings.Add("Text"this"Tb1Text"false, DataSourceUpdateMode.OnPropertyChanged);
    this.Controls.Add(tb);
  }

  public virtual void NotifyPropertyChanged(string propertyName)
  { 
    if (PropertyChanged != null)
      PropertyChanged(thisnew PropertyChangedEventArgs(propertyName));
  }

  #region INotifyPropertyChanged Member
  public event PropertyChangedEventHandler PropertyChanged;
  #endregion
}

Marko