C# wpf父控件和子控件事件响应问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# wpf父控件和子控件事件响应问题相关的知识,希望对你有一定的参考价值。

情况是这样的,我在Grid中放了多个子控件,然后我分别给子控件添加了事件
运行程序的时候事件可以正常响应。

但是当我给父控件(Grid)也添加了事件以后,运行程序、发现子控件的事件
无法响应了,想了一下(是不是子控件和父控件都是单击事件造成的呢?)

于是我把子控件换成右击事件,运行程序父控件和子控件的事件都能相应。

那请问又什么方法可以使子控件和父控件的单击事件都能各自相应吗?

参考技术A 在子控件点击事件中加上
e.Handled = true;追问

添加上以后,子控件本身的事件还是响应不了。

不添加,自己的事件不响应,反而传送到父控

件的事件上响应父控件的事件了。这是为什么

追答

Button的MouseDown行为被Click替代了,

用AddHandler

button1.AddHandler(Button.MouseDownEvent, new RoutedEventHandler(ButtonDelegate), true);

private void ButtonDelegate(object sender, RoutedEventArgs e)

MessageBox.Show("Button");

本回答被提问者采纳
参考技术B 这牵涉到wpf的路由事件。给你看个例子,你自然就知道如何解决了。
http://www.cnblogs.com/luminji/archive/2011/02/04/1949142.html
参考技术C ……
父控件 PreviewMouseDown
子控件 MouseDown
试试 应该可以各自触发

c# winform 怎么获取控件

ToolStripMenuItem的click事件,怎么获取被右键点击打开菜单的控件
sender返回的是ToolStripMenuItem
求教!
比如是一个TextBox上点击的打开的
怎么获得TextBox的Name??

为什么总是得到的是父容器的name

参考技术A 属性里面有个叫fathercontrol的好像 太久没搞C#了
你去查查 是控件父类CONTROL类的属性 ,代表父控件
参考技术B 没怎么挺清楚啊
是不是这样 TextBox t = (TextBox)sender;
t.Name你要的名称
参考技术C 获取textBox空件输入的值 this.textbox1.text.trem(); 参考技术D string name = e.ClickedItem.Name; 第5个回答  2011-10-17 不废话上代码。
MessageBox.Show(this.ActiveControl.Name);
有需求继续HI我。追问

不行,取出的是Textbox的父控件的名称

追答

_SCREEN.ACTIVEFORM.ACTIVECONTROL.NAME
我查了下msdn。就是他。你再试试。
http://support.microsoft.com/kb/129425/zh-cn
我应该没看错。

本回答被提问者采纳

以上是关于C# wpf父控件和子控件事件响应问题的主要内容,如果未能解决你的问题,请参考以下文章

WPF触屏Touch事件在嵌套控件中的响应问题

获取父用户控件WPF C#的名称

在 wpf C# 中禁用自定义父项时启用子控件

C# WPF 如何实现控件数组?

c# winform 怎么获取控件

c# 为自定义控件添加鼠标双击事件