2011-03-26 70 views
0

我的目標是在用戶輸入時將選項卡的標題更改爲文本字段中的標題。嗯,問題是,文本形式是在一個過程中動態創建的,因此無法從其他過程訪問。我做了一個事件處理程序,但令我驚訝的是,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; 
} 

雖然這工作正常,我覺得有一個更溫和的方法來做到這一點。如果你碰巧知道一個,請問你能否賜教?

謝謝你的時間。

+1

AFAIK發送對象應該是文本框對象,所以你可以施放它,獲取值:TextBox tb =(TextBox)sender; txt = tb.Text; – Stefan 2011-03-26 21:58:58

回答

2

而不是解析出的ToString(的結果),你只需將它轉換爲一個文本框,然後訪問文本直接

void cname_TextChanged(object sender, EventArgs e) 
{ 
    TextBox txt= sender as TextBox; 
    if (txt !=null) 
      tabControl1.SelectedTab.Text = txt.Text; 
} 
+0

謝謝,好多了 – Arnthor 2011-03-26 22:06:47

相關問題