#c_sharp #winforms
Как получить доступ из класса к динамически создаваемым элементам формы (в моем случае textBox)? Вот так я создаю элементы: for (int i = 1; i <= Convert.ToInt32(input); i++) { panel1.Controls.Add(new TextBox() { Name = i.ToString(), Location = new Point(54, yTextBox_n = yTextBox_n + 35), Font = new Font("Times New Roman", 14.25f) }); panel1.Controls.Add(new Label() { Name = i.ToString(), Location = new Point(8, yLabel_n = yLabel_n + 35), Text = "n" + i, Font = new Font("Times New Roman", 14.25f, FontStyle.Italic) }); } у меня есть алгоритм. я ввожу с формы нужные данные и выводятся вот эти динамически создаваемые элементы. затем я ввожу в них данные и эти данные мне надо передать в класс алгоритм как передать их? вот такой класс. Он совсем не доделанный. Он должен получать динамически создаваемые элементы class Class_Algorithm { int[,] Matrix; int L; int N; public Class_Algorithm(int[,] matrix, int l, int n) { Matrix = matrix; L = l; N = n; } public void Algorithm() { int k = 1; int q = 1; for (int d = 0; d < L; d++) { int m = 1; int z = 1; int[] r = new int[N]; for(int i = 0; i < N; i++) { for(int j = 0; j < N; j++) { r[i] += Matrix[i, j]; } } } } }
Ответы
Ответ 1
private DictionarydynamicTextboxes = new Dictionary (); private string TextByIndex(int index) { string result = ""; if (dynamicTextboxes.ContainsKey(index)) result = dynamicTextboxes[index].Text; return result; } dynamicTextboxes.Clear(); for (int i = 1; i <= Convert.ToInt32(input); i++) { TextBox box = new TextBox() { Name = "textbox_" + i.ToString(), Location = new Point(54, yTextBox_n = yTextBox_n + 35), Font = new Font("Times New Roman", 14.25f) }; dynamicTextboxes[i] = box; panel1.Controls.Add(box); panel1.Controls.Add(new Label() { Name = "label_" + i.ToString(), Location = new Point(8, yLabel_n = yLabel_n + 35), Text = "n" + i, Font = new Font("Times New Roman", 14.25f, FontStyle.Italic) }); } Ответ 2
Это в самой форме куда добавляется этот элемент. this.Controls.Find("ControlName", false); Если из другого класса, то в параметре передайте Ui компонент в который добавляется динамически контрол. Это на самом деле плохой способ, выложите код! В вашем случае не вижу ничего плохого, если добавить в класс формы функцию, которая будет в конструктор алгоритма передавать нужное значение. public void GetTextByDynamicCreateTextBox(string name) { string param = panel1.Controls.Find(name, false).FirstOrDefault().Text; Algorytm alg = new Algorytm(param); }
Комментариев нет:
Отправить комментарий