簡體   English   中英

用於動態創建文本框的Textchanged事件

[英]Textchanged event for dynamically create textbox

我遇到這樣的問題:具有一些功能,可以在其中動態創建TabPage對象和textBox控件。

   private void Create()
   {
        TabPage zakladkaTabControl = createTabPage();
        TextBox TB = new TextBox();

        TB.TextChanged += new EventHandler(TB_TextChanged);
    }

現在,當我在TextBox控件中編寫內容時,需要動態更改TabPage名稱。 我有支持更改TextBox控件內容的函數:

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        ((TabPage)sender).Text = ((TextBox)sender).Text;
    }

它不起作用,因為函數僅調用TextBox對象,而不調用TextBox和TabPage。 我知道靜態創建但動態創建的對象的解決方案嗎? 幾個小時我找不到解決方案。

非常感激任何的幫助。

var box = (TextBox)sender;
var page = (TabPage)sender.Parent;
page.Text = box.Text;

要獲取父級TabPage,可以遍歷控件層次結構,直到找到它為止:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    var tb = (TextBox)sender;
    Control ctl = tb.Parent;
    while (ctl != null && !(ctl is TabPage))
    {
        ctl = ctl.Parent;
    }

    if (parent != null)
    {
        var tp = (TabPage)parent;
        // Change the TabPage name here
    }
}

或者,可以將zakladkaTabControl設置為類的屬性,而不是局部變量,以便可以從textBox1_TextChanged方法引用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM