WinForm实现鼠标悬停显示控件
在某些需頻繁操作的環(huán)節(jié)中,為提高效率、減少勞動(dòng),可以在操作細(xì)節(jié)上下功夫,以帶來(lái)更好的用戶體驗(yàn)。
今天介紹的鼠標(biāo)懸停顯示功能就是一例,看似僅僅節(jié)省了一次點(diǎn)擊,實(shí)則在繁復(fù)操作中能夠?yàn)橛脩艄?jié)約很多體力,提高舒適度。
本例中的基本需求是:
鼠標(biāo)移入設(shè)置區(qū)域后,直接彈出詳盡設(shè)置內(nèi)容,并當(dāng)進(jìn)行了設(shè)置或鼠標(biāo)移出彈出的設(shè)置區(qū)域后,自動(dòng)關(guān)閉彈出的設(shè)置區(qū)域。
在這里,我設(shè)計(jì)了5個(gè)按鈕,以及一個(gè)日歷控件,該日歷控件就作為我們的詳細(xì)設(shè)置內(nèi)容,將其Visible屬性設(shè)為False以隱藏。
為5個(gè)按鈕同時(shí)注冊(cè)MouseEnter事件:
編寫(xiě)MouseEnter事件處理函數(shù):
private void button1_MouseEnter(object sender, EventArgs e) {monthCalendar1.Location = (sender as Control).Location;monthCalendar1.Show();monthCalendar1.BringToFront();monthCalendar1.Tag = sender; }代碼中首先將日歷控件的坐標(biāo)設(shè)為與觸發(fā)事件的按鈕位置相同,然后顯示日歷控件,并將其發(fā)送到界面最前端以確保不被遮擋,最后將其Tag屬性賦值為觸發(fā)該事件的按鈕,以方便后面事件中引用。
(PS:控件的Tag屬性一直沒(méi)弄明白正經(jīng)是干嘛用的,所以一直都用來(lái)隨便裝東西以方便傳遞^^)
隨后為日歷控件分別增加如下兩個(gè)事件處理函數(shù):
private void monthCalendar1_MouseLeave(object sender, EventArgs e) {monthCalendar1.Hide(); }private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e) {(monthCalendar1.Tag as Control).Text = e.Start.ToShortDateString();monthCalendar1.Hide(); }功能很簡(jiǎn)單,就不累述了。
測(cè)試運(yùn)行情況:
總結(jié)
以上是生活随笔為你收集整理的WinForm实现鼠标悬停显示控件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Wxpython设置窗口最小尺寸
- 下一篇: 使用手机拨号上网