Oli*_*ver 64
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<EventSetter Event="MouseDoubleClick" Handler="listViewItem_MouseDoubleClick" />
</Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)
唯一的困难是如果你对listviewitem映射到的底层对象感兴趣,例如
private void listViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
ListViewItem item = sender as ListViewItem;
object obj = item.Content;
}
Run Code Online (Sandbox Code Playgroud)
Osk*_*kar 37
我正在使用这样的东西只触发ListViewItem双击,而不是双击ListView的标题时.
private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
DependencyObject obj = (DependencyObject)e.OriginalSource;
while (obj != null && obj != myListView)
{
if (obj.GetType() == typeof(ListViewItem))
{
// Do something here
MessageBox.Show("A ListViewItem was double clicked!");
break;
}
obj = VisualTreeHelper.GetParent(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
private void positionsListView_DoubleClick(object sender, EventArgs e)
{
if (positionsListView.SelectedItems.Count == 1)
{
ListView.SelectedListViewItemCollection items = positionsListView.SelectedItems;
ListViewItem lvItem = items[0];
string what = lvItem.Text;
}
}
Run Code Online (Sandbox Code Playgroud)
使用该ListView.HitTest
方法
private void listView_MouseDoubleClick(object sender, MouseEventArgs e)
{
var senderList = (ListView) sender;
var clickedItem = senderList.HitTest(e.Location).Item;
if (clickedItem != null)
{
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
或旧的方式
private void listView_MouseDoubleClick(object sender, MouseEventArgs e)
{
var senderList = (ListView) sender;
if (senderList.SelectedItems.Count == 1 && IsInBound(e.Location, senderList.SelectedItems[0].Bounds))
{
//Do something
}
}
public bool IsInBound(Point location, Rectangle bound)
{
return (bound.Y <= location.Y &&
bound.Y + bound.Height >= location.Y &&
bound.X <= location.X &&
bound.X + bound.Width >= location.X);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我也需要它.我在msdn上找到了:
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.activation.aspx
我认为这个代表就是为了这个.
小智 5
我还没有足够大的声誉评分来添加最有帮助的评论,但这与那些询问 .Net 4.5 解决方案的人有关。
您可以使用鼠标 X 和 Y 坐标以及 ListView 方法 GetItemAt 来查找已单击的项目。
private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
ListViewItem item = myListView.GetItemAt(e.X, e.Y)
// Do something here
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
97431 次 |
最近记录: |