1. 程式人生 > >c# winform給Button等本身沒有tooltiptext屬性的控制元件新增tooltip提示

c# winform給Button等本身沒有tooltiptext屬性的控制元件新增tooltip提示

1. 對於沒有tooltiptext屬性的控制元件來說,要如何新增提示語呢?

在網上查了,大部分介紹都是在控制元件的MouseEnter事件中寫程式碼:

ToolTip p = new ToolTip();

p.ShowAlways = true;

p.SetToolTip(this.button1, "要顯示的文字");

但是如果一個視窗有很多控制元件,豈不是要寫很多重複的程式碼。

可以優化為每個控制元件使用同一個mouseenter事件,程式碼為

        private void 控制元件_MouseEnter(object sender, EventArgs e)
        {
            ToolTip p = new ToolTip();
            p.ShowAlways = true;

            if ((Control)sender==btn_返回)p.SetToolTip((Control)sender, "取消");

            if ((Control)sender==btn_受理)p.SetToolTip((Control)sender, "受理訂單");

            .....其他控制元件

        }

2. 實際上,.net本身已經給我們提供了tooltip控制元件,很方便的就可以新增提示語了。

   2.1 拖一個tooltip到視窗中後,視窗中的所有控制元件都會自動新增一個屬性:tooltip1上的ToolTip,只要在每個控制元件的這個屬性填上對應的提示語就行了。

實際效果:

2.2 在新增提示語後去建構函式裡面檢視,程式碼其實很簡單。視窗新增一個tooltip後,使用SetToolTip方法就行了 

       this.toolTip1.SetToolTip(this.btn_顯示下一單, "受理訂單並顯示下一單");

2.3 於是我自己用程式碼嘗試了一下:

        public Form_上下班設定()
        {
            InitializeComponent();
            ToolTip tooltip1 = new ToolTip();
            tooltip1.IsBalloon = true;
            tooltip1.SetToolTip(lbl_設定, "儲存設定");
            tooltip1.SetToolTip(txt_堂食歇業公告, "顧客將會看到你的公告,請不要亂寫!");
        }

實際效果:

所以,tootip,根本不需要使用MouseEnter事件。

3. 總結:有些方法能實現同樣的效果,但不一定是最佳的。.net為我們提供了很多方便的視覺化操作,我們很容易忽視其中的程式碼實現,很多時候,我們需要從建構函式中發現控制元件的正確用法。