use*_*925 6 c# devexpress winforms
当我第一次按下控制键(左键)然后单击鼠标左键时,为什么以下代码被执行.我正在修改现有代码,下面的代码已经存在.我想以前没有人尝试过它,按下控制键,它只用于点击鼠标左键,它一直适用于那种情况.但是我想要在按下控制键的同时按下鼠标左键时执行不同的代码.
private void treeList1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
TreeList tree = sender as TreeList;
if (e.Button == MouseButtons.Right && ModifierKeys == Keys.None && tree.State == TreeListState.Regular)
{
//the code that is here gets executed
MessageBox.Show("I am here");
}
}
Run Code Online (Sandbox Code Playgroud)
我非常感谢任何提示或帮助.
PS我想补充一点,在上面的情况下,当我检查e.button值时,虽然我按了鼠标左键和Ctrl键,但它显示等于Right.这对我来说是一个谜.
亲爱的StackOverflow研究员:我发现了问题,因为我在MAC上使用VM,我必须在我的虚拟机首选项上禁用一些键映射,现在我的原始代码工作.感谢你的帮助.
Keys.None值为0,单独使用时"很难按下按键"很难检测到.这个:
void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left && (ModifierKeys & Keys.None) == Keys.None)
{
MessageBox.Show("No key was held down.");
}
}
Run Code Online (Sandbox Code Playgroud)
只要单击左键发生,就会弹出一个消息框,无论键组合是什么.
但是,这个:
void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left && (ModifierKeys & Keys.Control) == Keys.Control)
{
MessageBox.Show("Control key was held down.");
}
}
Run Code Online (Sandbox Code Playgroud)
只有Control按住键(并单击鼠标左键)时,才会弹出一个消息框.
尝试反转您的条件并检测Control单击时按键的时间(而不是在未按任何键时检测到).话虽如此,我很难获得相同的代码Keys.ControlKey或Keys.LControlKey出于某种原因,因此隔离左控制键需要更多的研究.
| 归档时间: |
|
| 查看次数: |
15686 次 |
| 最近记录: |