Tag: mouseevent

WPF – 在一段时间内检测鼠标

检测鼠标按钮在特定时间段内按住某个特定元素的最佳方法是什么?

在Listbox.ItemTemplate(WPF C#)中查找控件

我在StackPanel找到正确的TextBlock控件时遇到了一些问题。 我的标记: 我的双击代码: private void lstTimeline_MouseDoubleClick(object sender, MouseButtonEventArgs e) { ListBoxItem lbi = (lstTimeline.SelectedItem as ListBoxItem); StackPanel item = lbi.FindName(“stkPanel”) as StackPanel; if (item != null) MessageBox.Show(“StackPanel null”); TextBlock textBox = item.FindName(“lblScreenName”) as TextBlock; if (textBox != null) MessageBox.Show(“TextBlock null”); MessageBox.Show(textBox.Text); } 但StackPanel为空。 如何在SelectedItem找到正确的TextBlock ? 谢谢你的帮助。

MouseDoubleClick事件不会冒泡

我的场景,简化:我有一个包含Employees行的ListView,在每个Employee行中,有一些按钮“Increase”和“Decrease”调整他的工资。 假设在我的程序中,双击Employee行意味着“解雇此人”。 问题是,当我快速点击“增加”时,这会触发ListViewItem上的双击事件。 当然,当我只是增加工资时,我不想解雇人。 根据所有其他事件的工作原理,我希望能够通过在事件上设置Handled=true来解决这个问题。 但是,这不起作用。 在我看来,WPF生成两个独立的,完全未链接的双击事件。 以下是重现我的问题的最小示例。 可见组件: 和处理程序代码: private void Button_MouseDoubleClick(object s, MouseButtonEventArgs e) { if (!e.Handled) MessageBox.Show(“Button got unhandled doubleclick.”); e.Handled = true; } private void ListViewItem_MouseDoubleClick(object s, MouseButtonEventArgs e) { if (!e.Handled) MessageBox.Show(“ListViewItem got unhandled doubleclick.”); e.Handled = true; } 启动此程序并双击列出的按钮后, 两个消息框按顺序显示。 (此外,此后按钮会卡在向下位置。) 作为一个“修复”,我可以在ListViewItem处理程序上检查附加到事件的可视树,并检查“那里有一个按钮”,从而丢弃该事件,但这是最后的手段。 我想在编写这样一个kludge之前至少要理解这个问题。 有谁知道为什么 WPF会这样做,以及一种优雅的惯用方法来避免这个问题?

在WPF TextBox上捕获鼠标单击

我想在TextBox上捕获鼠标点击: 现在,当用户第一次进入TextBox时,我只收到鼠标单击事件。 在此TextBox具有键盘焦点后,我不再接收鼠标单击事件。 知道如何让这个工作吗?

使用数据绑定在多列ListView中检索MouseEnter上的单元格值

我想从MouseEnter事件的ListView的行中的Car Name列中检索值,并将结果显示在TextBlock 。 我怎样才能做到这一点? XAML CS public Car SelectedCar { get; set; } public MainWindow() { InitializeComponent(); List cars = new List(); int i = 0; string[] name = { “Sentra”, “IS”, “Camry”, “s2000” }; string[] make = { “Nissan”, “Lexus”, “Toyota”, “Honda” }; string[] year = { “2000”, “2011”, “2013”, “2004” }; foreach (string […]

如何根据鼠标的移动绘制矩形?

我在这里找到了用于在表单上绘图的示例代码: http://msdn.microsoft.com/en-us/library/aa287522(v=vs.71).aspx 作为此要求的后续(发现哪些控件位于用户拖动鼠标所描述的矩形下方): 我的控件的位置与我的MouseDown和-Up事件的位置之间似乎不匹配 …我想为用户提供关于他们将要选择的内容的即时/持续反馈(何时/如果他们释放鼠标按钮)。 我想不仅仅是在鼠标移动后绘制一条线,而是绘制正在描述的矩形。 我认为MouseMove事件加上上面两个链接的代码可以解决这个问题,但这种情况经常被解雇/会对性能产生什么影响呢? 如果是这样,什么是一个更好的事件来挂钩,或者计时器是什么方式去这里? UPDATE 这段代码改编自John的下面的示例(唯一的区别是StackOverflow-引发对base。*的注释被注释掉了,我将颜色从红色变为黑色(没有引用Stendahl的意图)), 除了先前绘制的矩形之外还有效释放鼠标后再次显示。 IOW,第一个矩形完美绘制 – 它随着鼠标单击(按预期)消失。 但是,当我通过按下鼠标左键并向下并向右拖动来描述第二个矩形时,第一个矩形会再次显示! 并且这种情况将继续发生 – 每个先前绘制的矩形都会被记住,并在绘制新矩形时重新出现。 公共部分类Form1:表单{私有点? _开始; private Rectangle _previousBounds; public Form1() { InitializeComponent(); } private void Form1_MouseDown(object sender, MouseEventArgs e) { _start = e.Location; //base.OnMouseDown(e); } private void Form1_MouseMove(object sender, MouseEventArgs e) { if (_start.HasValue) DrawFrame(e.Location); //base.OnMouseMove(e); } private void Form1_MouseUp(object […]

Visual C#表单右键单击按钮

我正在尝试在visual c#中制作一个扫雷型游戏,当我右键单击并左键单击按钮时,我想要发生不同的事情,我该怎么做? 我试过这个代码,但它只记录左键点击: private void button1_MouseClick(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { MessageBox.Show(“Left”); } if (e.Button == System.Windows.Forms.MouseButtons.Right) { MessageBox.Show(“Right”); } }

“无法将字符串转换为ImageSource。”我该怎么做?

private void HeroMouseEnter(object sender, MouseEventArgs e) { ((Image)sender).Source = GetGlowingImage(((Image)sender).Name); } public ImageSource GetGlowingImage(string name) { switch (name) { case “Andromeda”: return “HeroGlowIcons/64px-Andromeda.gif”; default: return null; } } 我只是想根据鼠标输入的位置制作一个更改图像的事件。 但我无法做到这一点。 编辑:我在Windows窗体中执行此操作,它100%像我想要的那样工作。 我怎么能在WPF中翻译这样的东西? void HeroMouseEnter(object sender, EventArgs e) { ((PictureBox)sender).Image = GetGlowingImage(((PictureBox)sender).Name); } public Image GetGlowingImage(string name) { switch (name) { case “Andromeda”: return Properties.Resources._64px_Andromedahero___copia; case […]

从鼠标事件中获取shift / ctrl / alt状态?

在我的WPF应用程序中,如何在鼠标事件处理程序中获取shift , ctrl和alt键的状态? 我似乎记得在MFC你可以从鼠标事件中获取该信息。

使用C#在另一个应用程序上执行鼠标Click事件

我需要做的是我需要使用我的自定义应用程序控制安装在同一台机器上的另一个应用程序。 例如,如果我需要使用标准的Windows计算器,我只需将输入事件发送到计算器。 我已经使用了一些代码片段来实现这一点,现在我已经触发了鼠标和键盘事件。 但问题是,我可以确定键盘事件将命中目标应用程序,因为它具有进程句柄。 但我无法确定鼠标。 如果目标应用程序进入后台,我也无法启动鼠标点击。 我需要帮助才能找到确保鼠标单击仅在应用程序上完成的方法。 我需要发送鼠标坐标并点击。 例如“ sendMouseClick(“Notepad”, 100, 400);它会向记事本发送一个单击,即使它保持最小化。 ************************************************** *** 重要的提示********************************************* ********以前回答了一个类似的问题,但是参考首先找到另一个应用程序的状态,然后用键盘或鼠标发送输入,我需要做的是发送一个应用程序一套无论应用程序是否处于前台,必须运行的指令。 对于“其他人”::如果你不想帮助或无法帮助,那没关系,但请知道我没有偷过这个问题或任何东西。 我只是想在C#中完成这个任务。 我必须模拟键盘按键的代码是: using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Drawing; using System.Windows.Forms; namespace SimulateKeyPress { partial class Form1 : Form { private Button button1 = new Button(); private Button button2 = new Button(); private Button button3 = new […]