首页 > 后端开发 > C++ > 如何在 C# 中从另一个表单访问和修改表单控件?

如何在 C# 中从另一个表单访问和修改表单控件?

Barbara Streisand
发布: 2025-01-07 13:41:41
原创
993 人浏览过

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

从另一个表单访问表单控件

问题

从一个表单访问另一个表单的控件可能具有挑战性。考虑两种表单,带有 ListBox 的“表单 1”和需要访问其 SelectedIndex 属性的“表单 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; }
    }
}
// ...
登录后复制

表格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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板