0

私はとを持ってListBoxSelectionMode = MultiExtendedます。ListBoxのデフォルトの動作を「追加」にしたい。つまり、Ctrlキーを押したときに得られる動作は、ListBoxのデフォルトのパッシブ機能である必要があります。

どうすればいいですか?「マウスダウン」イベントと「キーダウン」イベントを手動でサブスクライブする必要がありますか?足りない設定はありますか?

ありがとう。

4

2 に答える 2

2

醜い解決策ですが、私ができる最善のことです。

    [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);
    }
于 2012-07-05T19:42:03.393 に答える
0

使用MultiSimpleモード

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

SelectionMode = SelectionMode.MultiSimple
于 2012-07-05T18:45:47.237 に答える