none
請教寫法疑問 RRS feed

  • 問題

  • C#2008
    小弟在FORM1  有10個 textbox1~textbox10
    我希望滑鼠停留在每個textbox1~10中 可以各自顯示個自字串
    那這樣是否需要針對每個textbox_MouseHover事件
    寫入以下code
    toolTip1.SetToolTip(textBox4, textBox4.Text); 
    這樣小弟需要複製10次~~><"

    還是有更快的方法(例如foreach)一次解決textbox_MouseHover事件所產生的效果
    感謝
    2009年6月3日 下午 12:47

解答

  • ricoisme:
         以Controls.Find 加上 手動增加EventHandler可以達到你的要求
          
          private void Form1_Load(object sender, EventArgs e)
            {
                int i;
                for (i = 1; i<=3; i ++)
                {
                    Object myObj;
                    myObj = this.Controls.Find("TextBox" + System.Convert.ToString(i),true )[0];
                    (myObj as TextBox).MouseHover += new System.EventHandler(Txt_MouseHover);
     
                }
            }
            private void Txt_MouseHover(object sender, EventArgs e)
            {
                MessageBox.Show((sender as TextBox).Name.ToString());
             }


    另外你可以參考 點部落 余小章的文章 [C#.NET][VB.NET] 如何設定控制項陣列 / 動態加入控制項 
           

    2009年6月3日 下午 01:11
    版主

所有回覆

  • 把十個 TextBox 的 MouseHover 事件都指向同一個事件常式。
    然後在事件處理常式中使用:

    TextBox textBox = sender As TextBox;
    toolTip1.SetToolTip(textBox, textBox.Text);
    小人物一枚。
    2009年6月3日 下午 01:00
    版主
  • ricoisme:
         以Controls.Find 加上 手動增加EventHandler可以達到你的要求
          
          private void Form1_Load(object sender, EventArgs e)
            {
                int i;
                for (i = 1; i<=3; i ++)
                {
                    Object myObj;
                    myObj = this.Controls.Find("TextBox" + System.Convert.ToString(i),true )[0];
                    (myObj as TextBox).MouseHover += new System.EventHandler(Txt_MouseHover);
     
                }
            }
            private void Txt_MouseHover(object sender, EventArgs e)
            {
                MessageBox.Show((sender as TextBox).Name.ToString());
             }


    另外你可以參考 點部落 余小章的文章 [C#.NET][VB.NET] 如何設定控制項陣列 / 動態加入控制項 
           

    2009年6月3日 下午 01:11
    版主
  • 加入 tooltip 控制項...


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年6月3日 下午 03:30
  • ricoisme:
         以Controls.Find 加上 手動增加EventHandler可以達到你的要求
          
          private void Form1_Load(object sender, EventArgs e)
            {
                int i;
                for (i = 1; i<=3; i ++)
                {
                    Object myObj;
                    myObj = this.Controls.Find("TextBox" + System.Convert.ToString(i),true )[0];
                    (myObj as TextBox).MouseHover += new System.EventHandler(Txt_MouseHover);
     
                }
            }
            private void Txt_MouseHover(object sender, EventArgs e)
            {
                MessageBox.Show((sender as TextBox).Name.ToString());
             }


    另外你可以參考 點部落 余小章的文章 [C#.NET][VB.NET] 如何設定控制項陣列 / 動態加入控制項 
           


    感謝大家熱情幫忙 終於 搞定了
    看來事件委派小弟還不夠熟悉
    多多練習
    ^^
    2009年6月3日 下午 03:35
  •    private void Form1_Load(object sender, EventArgs e)
        {
           foreach(TextBox current in this.Controls.OfType<TextBox>())
             {
                toolTip1.SetToolTip(current , current .Text); 
             }
       }
    2009年6月4日 上午 01:18