C# WinForms列表框附加选择

C# WinForms列表框附加选择,c#,winforms,listbox,C#,Winforms,Listbox,我有一个列表框,带有SelectionMode=MultiExtended。我希望列表框的默认行为是“append”。换句话说,按住control键时的行为应该是ListBox的默认被动功能 我该怎么做?我是否需要手动订阅“鼠标按下”和“按键按下”事件?有没有我错过的场景 谢谢。使用MultiSimple模式 丑陋的解决方案,但我能做的最好 [DllImport("user32.dll", SetLastError = true)] static extern void key

我有一个
列表框
,带有
SelectionMode=MultiExtended
。我希望列表框的默认行为是“append”。换句话说,按住control键时的行为应该是ListBox的默认被动功能

我该怎么做?我是否需要手动订阅“鼠标按下”和“按键按下”事件?有没有我错过的场景


谢谢。

使用
MultiSimple
模式


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

    [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);
    }
我失去了
MultiSimple
的“拖动选择”功能。我需要
MultiExtended
具有的附加功能,但我不想重置当前选择的索引。(基本上是按住Ctrl键时,
MultiExtended
的行为。)
    [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);
    }