Как получить доступ к элементам управления form2 в form1 в C # 2008/2010 - PullRequest
0 голосов
/ 29 марта 2010

Как получить доступ к элементам управления формы2 в форме1

А также я хотел бы создать события для элементов управления form2 в самой форме form1. Как добиться этого? Пожалуйста, помогите мне с полным кодом, используя C # 2008, Windows Forms.

Ответы [ 4 ]

1 голос
/ 29 марта 2010

Рекомендуется, чтобы вы устанавливали свойства тех атрибутов элементов управления, которые вы хотите предоставить, чтобы никто не мог реально помешать желаемому поведению вашей формы.

public partial class SecondaryForm {
    // Let's suppose you have put a TextBox control in design mode named txtCusomerName.
    public string CustomerName {
        set {
            this.txtCustomerName.Text = value.Trim();
        }
    }
}

public partial class MainForm {
    // Suppose you have a button to show a form with the customer name.
    private btnShowCustomerName_Click(object sender, EventArgs e) {
        SecondaryForm f
        f.CustomerName = "Acme inc,";
        f.ShowDialog();
    }
}

Помогает ли это?

1 голос
/ 29 марта 2010

Хорошо, допустим, у вас есть frmMain и frmSettings. Вы хотите, чтобы frmSettings обновил, скажем, метку на frmMain. Вот как я это сделаю.

Шаг 1. В файле frmMain.Designer.cs измените область действия надписей (или других элементов управления) на открытую.

Пример.

public System.Windows.Forms.GroupBox groupBox2;
public System.Windows.Forms.Label label8;

Теперь это было легко, а?

Шаг 2. В ваших frmSettings объявите это.

protected frmMain frmMain;

    public frmSettings(frmMain frmMain)
    {
        this.frmMain = frmMain;
    }

Теперь просто получайте удовольствие, меняя вещи. Как:

frmMain.label8.Text="Changed from frmSettings";
0 голосов
/ 29 марта 2010

Вы действительно хотите получить доступ к элементам управления в разных формах или хотите реагировать на изменения значений в данных, используемых в другой форме? Последний случай может быть реализован путем привязки элементов управления к глобальным данным модели и использования интерфейса INotifyPropertyChanged для сигнализации / прослушивания изменений данных.

0 голосов
/ 29 марта 2010

Откройте форму 2 из формы 1 и используйте переменную, с которой вы ее открыли, для доступа к форме. Например.

В форме 1

Form2 secondForm = new Form2();
Form2.Show();

secondForm.somePublicControl.Text = "test";
MessageBox.Show(secondForm.somePublicVariable);
...