1

可能重复:
双击列表框中的项目后,C# 文本不会显示在另一个表单上

我是 C# 的初学者。每当用户单击按钮和(这些按钮位于)时,我想从其他表单中编辑lblText表单中存在的标签。subFormmainFormbtnHighbtnLowmainForm

 For btnHigh_Click event  --> lblText should have text "high"
 For btnLow_Click event   --> lblText should have text "low"

我尝试了以下代码:(不工作

btnHigh_Click 事件

        subForm sf = new subForm ();
        sf.ShowDialog();
        sf.lblText.Text = "High";  // lblText --> modifier is public

我在这里做错了什么?

请帮助
提前致谢。

4

3 回答 3

2

在显示表单之前,您需要先更改值,

    subForm sf = new subForm ();
    sf.lblText.Text = "High";  
    sf.ShowDialog();
于 2012-10-13T09:27:04.003 回答
1

你写的是错的

subForm sf = new subForm (); 
sf.ShowDialog(); 
sf.lblText.Text = "High";  // lblText --> modifier is public 

ShowDialog方法阻止当前表单并打开另一个表单。这会导致该行在 您的遗嘱关闭sf.lblText.Text = "High";后“运行” 。subForm

最好的方法是不要让你的文本框公开,但你可以像这样在构造函数中传递数据:

在 subForm 类中添加构造函数:

public subForm(string strText)
{
    InitializeComponent();
    this.lblText.Text = strText; // Must be after the InitializeComponent method
}

在 subForm 的调用者中写下:

subForm sf = new subForm ("High");              
sf.ShowDialog();   

这是正确的方法。
最好避免将公共许可用于此类事情。因为所有的“世界”出来subForm都不需要知道它有一个名为 lblText 的标签,并用于管理对subForm数据的访问。

于 2012-10-13T09:51:30.823 回答
0

您可以为 subForm 创建公共属性:

public string lblText{get;set;}

并在加载表单上设置此属性:

 public subForm()
        {
            InitializeComponent();
    lblText.Text=lblText;
        }

和 :

subForm sf = new subForm ();
sf.lblText = "High";  
sf.ShowDialog();
于 2012-10-13T09:29:24.093 回答