[英]How to pass specific arguments to a programmatically-added button in a WPF app?
[英]Unable to access a programmatically-added control (C#)
我不是在design.cs中使用預制的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()
方法被調用,但是什么也沒有發生。
您正在processData
方法中創建MainForm
全新實例。 一種沒有以編程方式創建的TextBox(不會顯示/永遠不會調用Load的方式,無論如何這都不是訪問MainForms的正確方法)。 因此,當您調用EmptyTextBox().
時,將獲得NullReferenceException EmptyTextBox().
您可以將對MainForm的引用傳遞給SubForm的構造方法(也可以刪除new MainForm
行):
MainForm mf;
public SubForm (MainForm main)
{
mf = main;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.