【问题标题】:WinForms ListBox Append SelectionWinForms ListBox 追加选择
【发布时间】:2012-07-05 18:40:09
【问题描述】:

我有一个ListBoxSelectionMode = MultiExtended。我希望 ListBox 的 default 行为是“追加”。换句话说,您在按住控制键时获得的行为应该是 ListBox 的默认被动功能。

我该怎么做?我需要手动订阅“Mouse Down”和“Key Down”事件吗?有没有我缺少的设置?

谢谢。

【问题讨论】:

    标签: c# winforms listbox


    【解决方案1】:

    丑陋的解决方案,但我能做的最好。

        [DllImport("user32.dll", SetLastError = true)]
        static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
    
        public const byte KEYEVENTF_KEYUP = 0x02;
        public const int VK_CONTROL = 0x11;
    
        private void listBox1_MouseEnter(object sender, EventArgs e)
        {
            keybd_event(VK_CONTROL, (byte)0, 0, 0);
        }
    
        private void listBox1_MouseLeave(object sender, EventArgs e)
        {
            keybd_event(VK_CONTROL, (byte)0, KEYEVENTF_KEYUP, 0);
        }
    

    【讨论】:

      【解决方案2】:

      使用MultiSimple模式

      http://msdn.microsoft.com/en-us/library/system.windows.forms.selectionmode(v=vs.80).aspx

      SelectionMode = SelectionMode.MultiSimple
      

      【讨论】:

      • 我失去了MultiSimple 的“拖动选择”功能。我需要MultiExtended 具有的附加功能,但我不希望重置当前选定的索引。 (基本上MultiExtended 在按住 Ctrl 键时的行为。)
      猜你喜欢
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 2018-02-21
      • 1970-01-01
      相关资源
      最近更新 更多