gpt4 book ai didi

c# - 在另一个仍然打开的窗体上调用方法?

转载 作者:行者123 更新时间:2023-11-30 19:26:53 29 4
gpt4 key购买 nike

所以,我有两种形式——一种是开放的,另一种基本上只是第二个形式的弹出窗口。第二个表单打开,里面有一个蒙版文本框,还有“保存”和“取消”按钮——我想“保存”以更改第一个表单上的字段。

据我所知,我必须为我的弹出窗口使用第二种形式,因为我想要完成的事情并不像我可以放入 MessageBox 中的东西那么简单——如果有其他选择,我愿意耳朵。

我一直在尝试:

表格 1:

public partial class Form1 : Form
{
public void ChangeLabel()
{
label1.Text = StaticVariables.labelString;
}
}

表格 2:

public partial class Form2 : Form
{
private void changeForm1_Click(object sender, EventArgs e)
{
StaticVariables.labelString = textBox.Text;
Form1 frm = new Form1();
frm.ChangeLabel();
}
}

显然,这没有用。

最佳答案

第二种形式根本不需要知道第一种形式。让它知道它会使它的代码复杂化,并且不必要地将它与那种形式联系起来。让另一个表单知道主表单的内部 UI 组件更糟糕;如果您这样做,那么更改主窗体显示数据的方式将破坏其他窗体。只需让弹出窗口具有一个属性,该属性表示允许它在外部设置/获取的值:

public partial class Form2 : Form
{
public string Result //TODO give better name
{
get { return textBox.Text; }
}
public string DisplayText //TODO give better name
{
get { return label.Text; }
set { label.Text = value; }
}
}

然后主窗体可以设置显示值,显示窗体,并获取结果值:

Form2 popup = new Form2();
popup.DisplayText = "asdf";
popup.ShowDialog();
myField = popup.Result;

关于c# - 在另一个仍然打开的窗体上调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20691386/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com