最近有用到TreeView和ListView 双击Item事件,
如果在TreeView和ListView中加入鼠标双击事件,点击TreeView和ListView中的空白的地方 也可以触发事件,明显不符合要求
,后来经过一番百度和验证
现修改如下:
TreeView双击事件中
private void OnTreeViewDoubleClick(object sender, MouseButtonEventArgs e)
{
if (sender is TreeViewItem)
{
//如果双击的是item 进行你需要的操作
}
}
ListView需要修改如下
<Style x:Key="ListViewItemStyle" TargetType="ListViewItem">
<Style.Setters>
<EventSetter Event="MouseDoubleClick" Handler="OnListViewItemDoubleClick" />
</Style.Setters>
</Style>
CS中加入双击事件
private void OnListViewItemDoubleClick(object sender, MouseButtonEventArgs e)
{
if (sender is ListViewItem)
{
//如果双击的是item 进行你需要的操作
}
}
最近有用到TreeView和ListView 双击Item事件,如果在TreeView和ListView中加入鼠标双击事件,点击TreeView和ListView中的空白的地方 也可以触发事件,明显不符合要求,后来经过一番百度和验证现修改如下:TreeView双击事件中 private void OnTreeViewDoubleClick(object sender, MouseButtonEventArgs e) { if (send...
<
TreeView
.
Item
ContainerStyle>
<Style TargetType="{x:Type
TreeView
Item
}">
<EventSetter Event="MouseDoubleClick" Handler="On
Item
MouseDoubleClick" />
cs文件中 加入
private void On
Item
MouseDoubleClick(object sender, Mou.
项目中遇到一个需求,需要使用类似与button的click
事件
来完成一个点
击
动作,但是发现
Treeview
Item
没有click
事件
,查询文档后发现其实PreviewMouseUp
事件
可以实现这个需求,下面是代码:
private void
treeview
EnergyAnalysis_PreviewMouseUp(object sender, MouseButtonEventArgs e)
this.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.
treeView
1_DoubleClick);
private void
treeView
1_DoubleClick(object sender, TreeNodeMouseClickEventArgs e)
//获取节点数据
string text
ListView
中只有双
击
事件
,同时里面的List
Item
大多也是通过数据绑定获得的,很难在页面上直接操作。
虽然没有单机
事件
,但是
ListView
中有一个SelectionChanged
事件
,可以变相的当作单机
事件
。
可是这样依然不够,我们需要知道的我们点
击
的是哪一行,这个可以通过触发
事件
后通过
ListView
.SelectionChanged属性来直接获得所点
击
的那一行中的控件,相当于是直接为每一行添加了一个点
击
事件
。
private void
treeView
1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
if (e.Node.Name == "添加项目")
上图所示,
TreeView
控件有CheckBox选框,鼠标在对CheckBox状态进行改变时,快速双
击
代码运行时会发现CheckBox的显示状态发生变化但实际上节点的选中状态与显示的状态不一致,也就是快速双
击
时CheckBox状态无法正常响应。在网上查资料,验证后发现该方法可行
class
TreeView
Ext:
TreeView
protected override void WndProc(ref Message m)
2. 在代码中,为
TreeView
控件的 Selected
Item
Changed
事件
添加一个
事件
处理程序。
```csharp
private void
TreeView
_Selected
Item
Changed(object sender, RoutedPropertyChangedEventArgs<object> e)
// 获取选中的节点
var selected
Item
= e.NewValue as
TreeView
Item
;
// 执行单
击
事件
的代码
// ...
3. 在
事件
处理程序中,可以获取选中的节点并执行单
击
事件
的代码。
注意:如果
TreeView
的节点是通过数据绑定生成的,则需要为
TreeView
控件设置
Item
ContainerStyle 属性,并在其中添加一个触发器来处理节点单
击
事件
。