国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

解決Winform的ComboBox下拉框鼠標(biāo)雙擊事件無(wú)效的問(wèn)題

這篇具有很好參考價(jià)值的文章主要介紹了解決Winform的ComboBox下拉框鼠標(biāo)雙擊事件無(wú)效的問(wèn)題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

今天碰到一個(gè)需求:就是鼠標(biāo)雙擊ComboBox后,然后模擬鍵盤(pán)空格鍵按下,測(cè)試發(fā)現(xiàn),在ComboBox可以展開(kāi)下拉框的情況下,鼠標(biāo)雙擊事件是沒(méi)有用的。想要實(shí)現(xiàn)鼠標(biāo)雙擊事件,需要利用到鼠標(biāo)單擊事件,在鼠標(biāo)單擊事件中判斷(當(dāng)前時(shí)間減去上一次單擊的時(shí)間)是否小于某個(gè)值(如200毫秒),則認(rèn)為是用戶進(jìn)行了鼠標(biāo)雙擊。

在做的過(guò)程中又額外增加了一個(gè)要求,某些ComboBox在鼠標(biāo)點(diǎn)擊時(shí)就能展開(kāi)下拉列表,而不用點(diǎn)擊ComboBox后面的下拉小箭頭。要點(diǎn)擊鼠標(biāo)就能展開(kāi)ComboBox的選項(xiàng),這就需要在鼠標(biāo)單擊事件中把ComboBox的屬性DroppedDown設(shè)置為T(mén)rue

注意:其中踩了一個(gè)很冤的坑,計(jì)算兩個(gè)時(shí)間間隔的總毫秒,用了TimeSpan的Milliseconds,其實(shí)是不對(duì)的,Milliseconds計(jì)算的是TimeSpan秒數(shù)部分的值,應(yīng)該是TimeSpan的TotalMilliseconds

測(cè)試環(huán)境:

vistual studio 2017

.net framework? 4.0

測(cè)試步驟如下:

1? ?新增winfrom項(xiàng)目,名為:WindowsFormsApp1

2? 在界面中拖入兩個(gè)ComboBox控件,名稱為comboBox1和comboBox2,布局如下圖:

winform 下拉,C#編程,winform,ComboBox,鼠標(biāo)雙擊,下拉框,展開(kāi)下拉框

設(shè)置comboBox1和comboBox2的下拉選項(xiàng)值如下圖:

winform 下拉,C#編程,winform,ComboBox,鼠標(biāo)雙擊,下拉框,展開(kāi)下拉框

?winform 下拉,C#編程,winform,ComboBox,鼠標(biāo)雙擊,下拉框,展開(kāi)下拉框

3? 新增類ComboBoxBp并編輯如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public class ComboBoxBp
    {
        /// <summary>
        /// 設(shè)置ComboBox控件鼠標(biāo)雙擊業(yè)務(wù)邏輯
        /// </summary>
        /// <param name="cmbList"></param>
        public void SetComboBoxControlMouseDouble(List<ComboBox> cmbList)
        {
            if (cmbList == null || cmbList.Count == 0) return;
            foreach (var item in cmbList)
            {
                item.MouseClick += Cmb_MouseClick;
            }
        }
        private DateTime dtCmbDeptLastClick = DateTime.MinValue;
        /// <summary>
        /// 鼠標(biāo)單擊
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Cmb_MouseClick(object sender, MouseEventArgs e)
        {
            double gapMillises = (DateTime.Now - dtCmbDeptLastClick).TotalMilliseconds;
            //SystemInformation.DoubleClickTime的值為300
            if (gapMillises < SystemInformation.DoubleClickTime)
            {
                Cmb_DoubleMouseClick(sender, e);
            }
            dtCmbDeptLastClick = DateTime.Now;
            GetTestMessage(sender, e);
        }

        /// <summary>
        /// 鼠標(biāo)雙擊
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Cmb_DoubleMouseClick(object sender, MouseEventArgs e)
        {
            MessageBox.Show("鼠標(biāo)雙擊:"+(sender as ComboBox).Name);
        }
        /// <summary>
        /// ComboBox的屬性信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GetTestMessage(object sender, MouseEventArgs e)
        {
            //ComboBox comboBox = sender as ComboBox;
            //if (comboBox != null)
            //{
            //    int comboWidth = comboBox.Width - 20;
            //    if (e.Location.X > comboWidth && comboWidth > 0) return;
            //    int mouseY = e.Y;
            //    if (mouseY > comboBox.Height) return;
            //}


            //e.Location.X的值等于comboBox.Width  e.Location.Y等于comboBox.Height
        }
    }
}

?Form1的代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            new ComboBoxBp().SetComboBoxControlMouseDouble(new List<ComboBox>() { this.comboBox1,this.comboBox2});
            this.comboBox1.DroppedDown = true;
        }
    }
}

?目前是批量ComboBox注冊(cè)鼠標(biāo)雙擊事件,代碼比較簡(jiǎn)單,就不解釋了。

4 運(yùn)行結(jié)果如下:

winform 下拉,C#編程,winform,ComboBox,鼠標(biāo)雙擊,下拉框,展開(kāi)下拉框

winform 下拉,C#編程,winform,ComboBox,鼠標(biāo)雙擊,下拉框,展開(kāi)下拉框

好了,本文到此結(jié)束?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-526294.html

到了這里,關(guān)于解決Winform的ComboBox下拉框鼠標(biāo)雙擊事件無(wú)效的問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • unity鼠標(biāo)單擊物體與雙擊物體觸發(fā)不同的事件

    unity鼠標(biāo)單擊物體與雙擊物體觸發(fā)不同的事件

    下面舉例在unity里面Canvas下面添加一個(gè)image,當(dāng)鼠標(biāo)移動(dòng)到image點(diǎn)擊一次觸發(fā)事件 Debug.Log(“SingleClick!”);當(dāng)鼠標(biāo)在image點(diǎn)擊兩次觸發(fā)事件 Debug.Log(“DoubleClick!”);鼠標(biāo)雙擊和單機(jī)出現(xiàn)不同的響應(yīng)事件 在Canvas或者需要點(diǎn)擊的父物體上添加組件EventTrigger,打開(kāi) Add New Trigger 的菜單,添

    2024年02月11日
    瀏覽(98)
  • C#開(kāi)發(fā)winform&wpf后臺(tái)捕獲鼠標(biāo)移動(dòng)事件

    做 WPF和winform的時(shí)候,可以在界面上設(shè)置鼠標(biāo)移動(dòng)事件來(lái)檢測(cè)鼠標(biāo)移動(dòng),如果項(xiàng)目為后期改造這樣做的話改動(dòng)量很大,今天通過(guò)另外一種后臺(tái)調(diào)用windows api的方式進(jìn)行快速捕獲和觸發(fā),提高開(kāi)發(fā)效率分享給大家。

    2024年02月16日
    瀏覽(30)
  • Unity中的【Dropdown(包括TMP_Dropdown)下拉框當(dāng)只有一個(gè)下拉值時(shí)多次點(diǎn)擊 OnValueChange事件無(wú)效】的改進(jìn)方法

    Unity中的【Dropdown(包括TMP_Dropdown)下拉框當(dāng)只有一個(gè)下拉值時(shí)多次點(diǎn)擊 OnValueChange事件無(wú)效】的改進(jìn)方法

    Dropdown(包括TMP_Dropdown)下拉框當(dāng)只有一個(gè)下拉值時(shí),多次點(diǎn)擊下拉框,并選擇選項(xiàng)時(shí), OnValueChange事件不響應(yīng) 當(dāng)下拉框值變化的時(shí)候,代表用戶選擇了新的值,于是執(zhí)行對(duì)應(yīng)邏輯 在當(dāng)前情形之下,用戶onValueChanged事件無(wú)法響應(yīng),因?yàn)関alue沒(méi)有改變,那么如何補(bǔ)救呢? (1)如圖

    2024年02月15日
    瀏覽(29)
  • QT 觸控事件和鼠標(biāo)事件的分離(問(wèn)題已解決)

    問(wèn)題:QT圖形視圖框架,QGraphicsScene中默認(rèn)接收觸控事件,會(huì)將第一個(gè)點(diǎn)當(dāng)作鼠標(biāo)事件處理。 在開(kāi)發(fā)者開(kāi)發(fā)的時(shí)候,可能會(huì)有這樣的需求,希望自己的觸控事件和鼠標(biāo)事件能夠分割開(kāi)來(lái)。 找到的解決方法: 方案一: 問(wèn)題沒(méi)有解決,修改這兩個(gè)參數(shù),也無(wú)法讓QT的觸控單擊事件

    2024年02月16日
    瀏覽(31)
  • Qt 自定義窗口的標(biāo)題欄,重寫(xiě)鼠標(biāo)事件實(shí)現(xiàn),關(guān)閉隱藏,最大化/最小化,重寫(xiě)窗口事件函數(shù),實(shí)現(xiàn)鼠標(biāo)選中邊框拉大拉小,雙擊標(biāo)題欄切換窗口最大化和最小化

    Qt 自定義窗口的標(biāo)題欄,重寫(xiě)鼠標(biāo)事件實(shí)現(xiàn),關(guān)閉隱藏,最大化/最小化,重寫(xiě)窗口事件函數(shù),實(shí)現(xiàn)鼠標(biāo)選中邊框拉大拉小,雙擊標(biāo)題欄切換窗口最大化和最小化

    Qt 自定義窗口的標(biāo)題欄,重寫(xiě)鼠標(biāo)事件實(shí)現(xiàn),關(guān)閉隱藏,最大化/最小化,重寫(xiě)窗口事件函數(shù),實(shí)現(xiàn)鼠標(biāo)選中邊框拉大拉小,雙擊標(biāo)題欄切換窗口最大化和最小化 1、main.cpp 2、widget.h 3、widget.cpp 4、效果展示 5、完成

    2024年02月16日
    瀏覽(92)
  • selenium非select類的下拉框處理實(shí)現(xiàn)鼠標(biāo)滾輪事件

    我查詢了很久,在我們遇到非select類的下拉框處理的時(shí)候,建議使用第二種方法,可以直接拖動(dòng)到可見(jiàn)的元素去。建議試一試,用爽了過(guò)來(lái)謝我! 代碼:

    2024年02月11日
    瀏覽(27)
  • 鼠標(biāo)禁用樣式(cursor: not-allowed)無(wú)效和鼠標(biāo)禁用事件(pointer-events: none)沖突

    鼠標(biāo)禁用樣式(cursor: not-allowed)無(wú)效和鼠標(biāo)禁用事件(pointer-events: none)沖突

    鼠標(biāo)禁用樣式: cursor: not-allowed; 鼠標(biāo)禁用事件: pointer-events: none; 元素永遠(yuǎn)不會(huì)成為鼠標(biāo)事件的target。但是,當(dāng)其后代元素的pointer-events屬性指定其他值時(shí),鼠標(biāo)事件可以指向其后代元素。 如果同時(shí)使用 ,鼠標(biāo)為默認(rèn)樣式; 解決方法: 外層添加盒子將樣式分開(kāi) 外部盒子使

    2024年02月13日
    瀏覽(36)
  • WPF下拉框ComboBox樣式

    WPF下拉框ComboBox樣式

    顯示效果下圖: 1、靜態(tài)顯示如圖1,懸浮如圖2 2、下拉的Popup帶陰影(無(wú)Border);下拉三角圖標(biāo)用的是自己的png圖片,可任意替換(其他或Path數(shù)據(jù)等自己處理);寬高等可直接在樣式代碼里修改。 3、實(shí)際項(xiàng)目里,對(duì)下拉的滾動(dòng)條做了美化處理,此處沒(méi)附帶上相關(guān)代碼。有需

    2024年02月16日
    瀏覽(22)
  • c# winform 獲取 comboBox選擇項(xiàng)的value

    在WinForms中,您可以使用ComboBox控件來(lái)允許用戶從下拉列表中選擇一個(gè)選項(xiàng)。要獲取ComboBox中當(dāng)前選定項(xiàng)的值,可以使用SelectedValue屬性。此屬性返回當(dāng)前選定項(xiàng)的值,而不是顯示的文本。 以下是一個(gè)示例代碼,演示如何獲取ComboBox選擇項(xiàng)的值: 在上述代碼中,我們定義了一個(gè)

    2024年02月21日
    瀏覽(23)
  • python tkinter 下拉框(Combobox)

    python tkinter 下拉框(Combobox)

    代碼示例: 效果如下圖所示:

    2024年02月15日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包