ホームページ > バックエンド開発 > C++ > C# の別のフォームからフォーム コントロールにアクセスして変更するにはどうすればよいですか?

C# の別のフォームからフォーム コントロールにアクセスして変更するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-07 13:41:41
オリジナル
1004 人が閲覧しました

How Can I Access and Modify Form Controls from Another Form in C#?

別のフォームからフォーム コントロールにアクセスする

問題

あるフォームから別のフォームにあるコントロールにアクセスするのは難しい場合があります。 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;
}
// ...
ログイン後にコピー

を渡す代替ソリューションReference

もう 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート