0

私の ListBox MouseMove イベントのコードは次のとおりです。

private void lbxItems_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left) //this one is good
    {
        lbxItems.DoDragDrop("Copy Text 1", DragDropEffects.Copy);
    }
    else if (Control.ModifierKeys == Keys.Alt && e.Button == MouseButtons.Left) //this desn't work
    {
        lbxItems.DoDragDrop("Copy Text 2", DragDropEffects.Copy);
    }
}

e.Button == MouseButtons.Left条件だけでは問題ありませんが、Control.ModifierKeys == Keys.Alt. ListBox コントロールは ALT キー + 左マウス ボタンの組み合わせを認識できるのだろうか。誰でも提案できますか?

4

2 に答える 2

1

うーん、まあ、ここで修正を見つけたと思います。これは非常に簡単です。

Control.ModifierKeys == Keys.Altそれを機能させるには、最初に条件を評価e.Button == MouseButtons.Leftしてelse ifステートメントに入れるだけです。したがって、ALT + マウスの左ボタンは常に最初にチェックされます。

private void lbxItems_MouseMove(object sender, MouseEventArgs e)
{
    if (Control.ModifierKeys == Keys.Alt && e.Button == MouseButtons.Left) 
    {
        lbxItems.DoDragDrop("Copy Text 1", DragDropEffects.Copy);
    }
    else if (e.Button == MouseButtons.Left) 
    {
        lbxItems.DoDragDrop("Copy Text 2", DragDropEffects.Copy);
    }
}

また、元のコードがステートメントControl.ModifierKeys == Keys.Altを実行する機会がなかっただけで、機能しなかったことを指摘する必要があります。else if

于 2012-06-07T02:42:10.277 に答える
0

あなたがしたようにそれをすることはできません。関連するキー押下ハンドラーを使用して最初に押された Alt キーをキャプチャし、それを共有変数に格納する必要があります。マウスが移動すると、共有変数にアクセスして Alt キーが押されたかどうかを確認できます。

于 2012-06-07T02:26:38.787 に答える