あるフォームから別のフォームにあるコントロールにアクセスするのは難しい場合があります。 ListBox を含む "Form 1" とその SelectedIndex プロパティにアクセスする必要がある "Form 2" の 2 つのフォームについて考えてみましょう。
シングルトン パターンを使用するのではなく、参照を渡すことを検討してください。ある形から別の形へ。これにより、それらの間で直接通信が可能になります。
Form1:
// ... public int MyListBoxSelectedIndex { set { lsbMyList.SelectedIndex = value; } } // ...
Form2:
// ... private Form1 mainForm; // Reference to "Form 1" public AddNewObjForm() { InitializeComponent(); mainForm = new ControlForm(); } public void SomeMethod() { mainForm.MyListBoxSelectedIndex = -1; } // ...
もう 1 つのアプローチでは、Form1 から Form2 に参照を渡し、Form2 が Form1 の Label コントロールの LabelText プロパティを変更できるようにします。
Form1:
// ... public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(this); // Pass reference to Form2 frm.Show(); } public string LabelText { get { return Lbl.Text; } set { Lbl.Text = value; } } } // ...
フォーム 2:
// ... public partial class Form2 : Form { public Form2() { InitializeComponent(); } private Form1 mainForm = null; public Form2(Form callingForm) { mainForm = callingForm as Form1; // Cast to Form1 InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { this.mainForm.LabelText = txtMessage.Text; // Modify LabelText } private void button1_Click(object sender, EventArgs e) { // ... } } // ...
以上がC# の別のフォームからフォーム コントロールにアクセスして変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。