[c#] dynamiczna lista textboxow

0

witam

w ramach treningu programowania i prob nauczenia sie c# chcialem sobie napisac prosty programik ktory liczy sudoku :) stworzylem w VC# przyciski o nazwach t00, t01,t02, ..... t 88 . chcialem wrzucic to do tablicy zeby latwiej bylo mi operowac na danych.. i mowiac szczerze nie wiem jak zrobic zeby do tablicy
TextBox[,] TabText = new TextBox[9, 9];
wrzucic autoamtycznie textboxy :) recznie mi sie nie chce i byloby to nudne :P kombinowalem cos z StringBuilderem ale mowiac szczerze nie moge sobie poradzic sam... :( wiec prosze was o pomoc :)

pozdrawiam :)

0

Spróbuj może tak:

     public partial class SudokuForm : Form
    {
        private TextBox[,] _textBoxes;

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

        private void InitializeTextBoxes()
        {
            _textBoxes = new TextBox[9, 9];
            int locationX = 0, locationY = 0, size = 20;
            for (int i = 0; i < _textBoxes.GetLength(0); i++)
            {
                for (int j = 0; j < _textBoxes.GetLength(1); j++)
                {
                    _textBoxes[i, j] = new TextBox();
                    _textBoxes[i, j].Location = new Point(locationX, locationY);//pozycja
                    _textBoxes[i, j].Size = new Size(size, size);//rozmiar
                    _textBoxes[i, j].Name = String.Format("textBox{0}{1}", i, j);//nazwa
                    _textBoxes[i, j].TextChanged += new EventHandler(FormTextChanged);//dodanie obsługi zdarzenia zmiany zawartości.
                    _textBoxes[i, j].Text = (i + j).ToString();//ustawiamy jakąś wartość
                    Controls.Add(_textBoxes[i, j]);//dodajemy do listy kontrolek naszej formy
                    locationX += size;//zmieniamy współrzędna X
                }
                locationY += size;//zmieniamy współrzędną Y
                locationX = 0;//zerujemy współrzędną X
            }
        }

        private void FormTextChanged(object sender, EventArgs e)
        {
            TextBox textBox = sender as TextBox;
            //obsługa zdarzenia zmiany zawartości TextBox-a.
            //zmienna textBox reprezentuje TextBox dla którego zaszła zmiana.
        }
    }
0

W celu robienia tego typu tabelek warto użyć kontrolki TableLayoutPanel - nie trzeba się wtedy martwić o obliczanie pozycji nowo dodawanych elementów, ona sama o to dba :)

0

hmm... tworzenei tablicy w trakcie rysowania formy.. jest to jakies rozwiazanie :) dzieki wielkie :) z Twojego kodu nie skorzystam, bo sprobouje to samemu napisac :D ale dzieki za pomysl :) o tej drugiej kontrolce rowniez poczytam. ;)

pozdrawiam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1