我有一个带有按钮和文本框的简单Windows窗体。我希望按下按钮时文本框更新一些字符串。我知道以下工作:
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
的其他类中。在该课程中,我想要一个方法,我可以在任何textBox
上使用string
运行。当我尝试以下操作时,出现错误:The name 'textBox1' does not exist in the current context
。
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;
}
}
我在这里看到了类似事情的更复杂的问题,但我无法让他们的解决方案发挥作用。我想我错过了一些基本的东西。
此外,我不知道如何扩展此方法以接受任何textBox
,例如:
public void updateText(??? target, string s)
{
target.Text = s;
}
target
会选择哪种类型?
答案 0 :(得分:3)
将您的函数更改为接受TextBox,如下所示:
public void updateText(TextBox target, string s)
{
target.Text = s;
}
答案 1 :(得分:1)
Samvel Petrosov的答案是最佳解决方案,但是如果您想要另一个选项,那就是:将文本框修饰符设置为public
(或internal
),添加对表单的引用Updates
课程。然后你就可以自由地修改它(文本框)了。