>백엔드 개발 >C++ >C#의 다른 양식에서 양식 컨트롤에 액세스하고 수정하려면 어떻게 해야 합니까?

C#의 다른 양식에서 양식 컨트롤에 액세스하고 수정하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-07 13:41:41997검색

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

다른 양식에서 양식 컨트롤에 액세스

문제

한 양식에서 다른 양식의 컨트롤에 액세스하는 것이 어려울 수 있습니다. ListBox가 있는 "Form 1"과 SelectedIndex 속성에 액세스해야 하는 "Form 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;
}
// ...

합격을 통한 대체 솔루션 참조

또 다른 접근 방식은 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; }
    }
}
// ...

Form2:

// ...
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.