我没有在design.cs中使用预先制作的TextBox控件,而是使用以编程方式添加的TextBox。首先,这个TextBox由用户填充,并且使用onClick方法按钮,内容在另一个从onClick方法调用的类文件中的方法内处理。之后,我想删除TextBox中的任何内容并将其设置为空状态,就像它的初始状态一样,但它不是很有效。
/*MainForm.cs*/
private TextBox tb;
private SubForm sf = new SubForm();
private void initTextBox(){
tb = new TextBox();
preExistingPanel.Controls.Add(tb); //attach the textbox onto a panel
}
private void MainForm_Load(object sender, EventArgs e){
initTextBox();
}
private void button_Click(object sender, EventArgs e){
string tbContent = tb.Text;
sf.processData(tbContent);
}
public void EmptyTextBox(){
tb.Text = ""; //This does not work, and nothing happens
}
/*SubForm.cs*/
public void processData(string tbContent){
/*Do something with tbContent*/
...
...
/*Here, I want to empty the textBox*/
MainForm mf = new MainForm();
mf.EmptyTextBox();
}
有人可以帮我查一下这段代码有什么问题吗?我知道
EmptyTextBox()
调用方法,但没有任何反应。
答案 0 :(得分:2)
您正在MainForm
方法中创建processData
的全新实例。一个没有以编程方式创建TextBox的文件(它没有显示/ Load从不调用 - 这也不是正确访问MainForms的方法)。因此,当您调用EmptyTextBox().
您可以将MainForm的引用传递给SubForm的construtor(同时删除new MainForm
行):
MainForm mf;
public SubForm (MainForm main)
{
mf = main;
}