dipps
Goto Top

C Sharp textbox mit zahlen über for schleife ansteuern

C Sharp textbox mit zahlen über for schleife ansteuern

Hallo
ich habe
6 mal 8 Text boxen mit L1B1N ... L1B8N , L2B1N .. und soweiter bis L6B8N
ich habe eine txt Datei in ein Array geschrieben
sp[ 1,1,0] und soweiter

nun soll über eine forschleife

for(int x=1;x<7;x++)
{
for(int z=1;z<9;z++)
LxBzN.text = Array[x,z,0];
}

Aber mit LxBzN funktioiert nicht.
Wie kann man das lösen?

Content-Key: 167284

Url: https://administrator.de/contentid/167284

Printed on: April 25, 2024 at 22:04 o'clock

Member: Friemler
Friemler May 31, 2011 at 16:43:51 (UTC)
Goto Top
Hallo Dipps,

wenn Du das so machen willst, musst Du die Textbox-Objekte auch in ein zweidimensionales Array packen.

Programmierst Du öfter Batchscripte? Wegen LxBzN face-wink

Gruß
Friemler
Member: Dipps
Dipps May 31, 2011 at 16:45:20 (UTC)
Goto Top
und wie mache ich das?
Habe ich noch ni gemacht.
Member: Friemler
Friemler May 31, 2011 at 16:49:44 (UTC)
Goto Top
Zitat von @Dipps:
und wie mache ich das?

Evtl. mit einer anderen Schleife, die alle Kindobjekte des Elternobjekts der Textboxen in das Array schreibt.

Grüße
Member: Dipps
Dipps May 31, 2011 at 16:53:18 (UTC)
Goto Top
verstehe ich gerade nicht
kannst du mir mal einen kurzen code geben?
Member: Friemler
Friemler May 31, 2011 at 17:00:25 (UTC)
Goto Top
Tut mir leid, ich programmiere in Delphi. In C# müsste es doch auch eine Möglichkeit geben, auf die untergeordneten Objekte eines Objektes zugreifen zu können und durch diese Liste zu iterieren.
Member: Dipps
Dipps May 31, 2011 at 17:02:48 (UTC)
Goto Top
kannst du mir mal ein Delphi code bsp geben?
Member: Friemler
Friemler May 31, 2011 at 17:50:39 (UTC)
Goto Top
Bittesehr:
var
  TextBoxArray: Array[0..5] of Array[0..7] of TEdit;
  

procedure FillTextBoxesInArray(aParent: TPanel);
var
  I,
  row,
  col: Integer;
  
begin
  row := 0;
  col := 0;
  
  for I := 0 to aParent.ControlCount - 1 do
  begin
    TextBoxArray[row, col] := aParent.Controls[I];

    if (I+1) mod 8 = 0 then
    begin
      col := 0;
      Inc(row);
    end
    else
      Inc(col);
  end;
end;

Ob Dir das wirklich weiterhilft weiß ich nicht. Die Objekte werden in Delphi über die Delphi-eigene VCL (Visual Component Library) verwaltet.

Grüße
Mitglied: 76109
76109 Jun 02, 2011 at 17:59:29 (UTC)
Goto Top
Hallo Dipps!

Meinst Du sowas:
bc80b9ff00e76109739c525bde122fb2

Wenn ja, in VBA z.B so:
Sub test()
    Dim arr As Variant, TBox As Control, Offsets As Variant
    
    arr = Array(Array(10, 11, 12, 13, 14, 15, 16, 17), Array(20, 21, 22, 23, 24, 25, 26, 27), _
                Array(30, 31, 32, 33, 34, 35, 36, 37), Array(40, 41, 42, 43, 44, 45, 46, 47), _
                Array(50, 51, 52, 53, 54, 55, 56, 57), Array(60, 61, 62, 63, 64, 65, 66, 67))


    Load UserForm1
    
    For Each TBox In UserForm1.Controls
        Offsets = Split(TBox.Tag, ".")  
        If UBound(Offsets) = 1 Then TBox = arr(Offsets(0))(Offsets(1))
    Next
    
    UserForm1.Show
End Sub
Wobei im Tag der jeweiligen TextBox eine Array-Adresse in Form '0.0' bis '6.7' eingetragen ist.
Member: Dipps
Dipps Jun 09, 2011 at 12:10:46 (UTC)
Goto Top
ja so meine ich es nur halt in c# wenn möglich.
Member: Jenna86
Jenna86 Jul 06, 2011 at 12:07:03 (UTC)
Goto Top
Schau mal unter
http://openbook.galileocomputing.de/csharp/kap16.htm#t22
bei 17.2.2

Da wird dir bezüglich des Arrays geholfen.

Der Typ des Arrays wird dann einfach eine TextBox textBoxArray oder ähnliches.
Dann musst du die einzelnen Felder wie im Link beschrieben beschreiben.

Du kannst alles automatisch erzeugen lassen in zwei for-Schleifen ( eine für die rows, eine für die cols ) oder eben manuell anlegen.

Anschließend kannst du über den Index bzw die Indizes auf jede TextBox zugreifen:

textBoxArray[Zeile][Spalte]; //Musst nur schauen, dass quasi der "y-Wert" zuerst kommt in Form der Zeile.

Da die Frage schon etwas älter ist bin ich nicht näher drauf eingegangen. Solltest du noch Hilfe brauchen, so gehe ich gerne nochmal etwas näher drauf ein.