Для этого надо, чтобы экземпляр второй формы был доступен в первой форме. Если так, что свойство Controls содержит все контролы, которые лежат на форме.
[STAThread]
static void Main()
{
Form2 f2 = new Form2();
Form1 f1 = new Form1(f2);
Application.Run(f1);
}
Код для первой формы:
public class Form1 : System.Windows.Forms.Form
{
private Form2 _f2;
public Form1(Form2 f2)
{
this._f2 = f2;
//
// Required for Windows Form Designer support
//
InitializeComponent();
}
public void Test()
{
foreach(Control ctrl in _f2.Controls)
{
// TODO
}
}
Если я
----Form1-----
Form2 frm = new Form2();
int i= frm.V1();
И так если мы создаем на Форм2 в дизайнере контролы , то выводит их количество . А если мы создаем динамически (во время выполнения) , то не выводит правельно
А вопрос тогда — в каком месте Вы динамически их создаете?
Этот вопрос возник потому что Вы создали экземпляр Form2 — выполнился только конструктор и InitializeComponents и сразу вызвали frm.V1();
Разве после InitializeComponent массив Controls не должен содержать нужное количество контролов? Может автор имеет ввиду, что создает динамически не форму, а контролы? Не забывает ли он добавить их в массив Controls?
Смотри... мне вообще надо узнать весь масив контрл , с его єлементами. А єто я написал для примера...
тк если я єту Функцию вызываю в Форм2 , то все ок. Но если в другой форме то ничего не получаеться
public class Form1 : Form
{
...
}
public class Form2 : Form
{
...
Form1 form;
...
private void EnumerateAllControlsOnForm1()
{
foreach (Control ctl in form.Controls)
{
...
}
}
...
}
Вроде уже написали? В чем конкретно проблема? Опиши последовательность действий (или код).
Проблема в том , что если я добавляю динамически ... то такой код не работает. вернее работает , но выдает число контролов , которые находились "вначале".
Здравствуйте, osand, Вы писали:
O>Проблема в том , что если я добавляю динамически ... то такой код не работает. вернее работает , но выдает число контролов , которые находились "вначале".
O>данное сообщение получено с www.gotdotnet.ru O>ссылка на оригинальное сообщение
Гм, тебе говорят о том, что, когда ты создаешь свои динамические контролы, ты их должен САМ добавить в массив Controls.
class Form1 {
....
Button b = new Button();
this.Controls.Add(b);
....
};