C# 从类外部更改WinForm元素
我有一个简单的Windows窗体,带有按钮和文本框。当按下按钮时,我想用一些字符串更新文本框。我知道以下工作:C# 从类外部更改WinForm元素,c#,winforms,C#,Winforms,我有一个简单的Windows窗体,带有按钮和文本框。当按下按钮时,我想用一些字符串更新文本框。我知道以下工作: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { textBox1.text = "some
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.text = "some string";
}
}
我也知道,以下方法会奏效。这给了我更多的自由,因为我可以轻松决定要在文本框中显示什么:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
updateText("some string");
}
public void updateText(string s)
{
textBox1.Text = s;
}
}
现在,让我们假设我的代码越来越大,我想保持整洁。我想将执行更新的代码移动到另一个名为updates
的类中。在这个类中,我希望有一个方法,可以在任何文本框
上运行,并且可以使用任何字符串
。尝试以下操作时,出现错误:名称“textBox1”在当前上下文中不存在
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Updates.updateText("some string");
}
}
public class Updates
{
public void updateText(string s)
{
textBox1.Text = s;
}
}
我在这里看到了关于类似事情的更复杂的问题,但我无法让他们的解决方案起作用。我想我错过了一些基本的东西
此外,我不知道如何扩展此方法以接受任何文本框
,例如:
public void updateText(??? target, string s)
{
target.Text = s;
}
target
将采用什么类型?将您的函数更改为接受如下文本框:
public void updateText(TextBox target, string s)
{
target.Text = s;
}
将函数更改为接受文本框,如下所示:
public void updateText(TextBox target, string s)
{
target.Text = s;
}
Samvel Petrosov answer是最好的解决方案,但如果您希望有其他选项,那么它就是:将文本框修饰符设置为
public
(或internal
),在Updates
类中添加对表单的引用。然后您可以自由修改它(文本框)。Samvel Petrosov answer是最好的解决方案,但如果您想有其他选择,它是:将文本框修改器设置为公共
(或内部
),在更新
类中添加对表单的引用。然后您就可以自由修改它(文本框)。即使问题的内容看起来没问题,我还是投票关闭它,因为它表明您甚至没有查看Microsoft的官方文档页面,也没有对该主题进行任何研究。目标类型与表单中的控件类型完全相同……我同意@m.rogalski的观点,因为这个问题非常基本,不能被认为有任何专业价值。我是编程新手。我查阅了官方文件,但不明白。谢谢你对新手的欢迎!很棒的东西。在Visual Studio中,如果你将鼠标悬停在一个变量(textBox1
)上,它将显示它的类型(TextBox
)。尽管问题的内容看起来不错,我还是宁愿投票关闭它,因为它显示你甚至没有查看Microsoft的官方文档页面,也没有对该主题进行任何研究。目标类型与表单中的控件类型完全相同……我同意@m.rogalski的观点,因为这个问题非常基本,不能被认为有任何专业价值。我是编程新手。我查阅了官方文件,但不明白。谢谢你对新手的欢迎!很棒的东西。在Visual Studio中,如果您将鼠标悬停在变量(textBox1
)上,它将显示其类型(TextBox
)。在这种情况下,我宁愿使用type,因为它可以更改按钮、标签
或TextBox
@m.rogalski的文本。是的,您是对的,控件将使函数更通用。但是,如果他想更改某些特定于文本框字段的字段,那么它将带来额外的检查。在这种情况下,我宁愿使用类型,因为它可以更改按钮
、标签
或文本框
@m.rogalski的文本。是的,您是对的,控件将使功能更通用。但是,如果他想更改某些特定于文本框字段的字段,那么它将带来额外的检查。我要注意的是,在这种情况下,他需要为表单
保留一个更新
类的实例。我要注意的是,在这种情况下,他需要为表单
保留一个更新
类的实例。