我的目標是在用戶輸入時將選項卡的標題更改爲文本字段中的標題。嗯,問題是,文本形式是在一個過程中動態創建的,因此無法從其他過程訪問。我做了一個事件處理程序,但令我驚訝的是,EventArgs沒有包含任何文本字段的屬性。代碼是以下幾點:C# - 文本形式的文本更改事件:有沒有更好的方法?
private void toolStripButton1_Click(object sender, EventArgs e)
{
NewChar();
}
private void NewChar()
{
TabPage ntab = new TabPage("New char");
TextBox cname = new TextBox();
tabControl1.Controls.Add(ntab);
ntab.Controls.Add(cname);
cname.Location = new Point(10, 10);
cname.TextChanged += new EventHandler(cname_TextChanged);
}
最後,我設法發現,該事件的發件人值保存文本字段的當前文本,所以我乾脆砍從發件人的字符串reperesentation這個值:
void cname_TextChanged(object sender, EventArgs e)
{
string tmp = sender.ToString();
int pos = tmp.IndexOf(":");
string txt = tmp.Substring(pos+1);
tabControl1.SelectedTab.Text = txt;
}
雖然這工作正常,我覺得有一個更溫和的方法來做到這一點。如果你碰巧知道一個,請問你能否賜教?
謝謝你的時間。
AFAIK發送對象應該是文本框對象,所以你可以施放它,獲取值:TextBox tb =(TextBox)sender; txt = tb.Text; – Stefan 2011-03-26 21:58:58