是否有可能在ListView中获取doubleclicked行的值?我注册了一个活动:
private void lvLista_DoubleClick(object sender, EventArgs e)
{
MessageBox.Show(lvLista.SelectedItems.ToString());
}
Run Code Online (Sandbox Code Playgroud)
但是在消息上,当我在listview中双击某一行时,我得到:
System.Windows.Forms.ListView + SelectedListViewItemCollection
更重要的是,我在listview中有2列:
lvLista.Columns.Add("ID");
lvLista.Columns.Add("Tilte");
Run Code Online (Sandbox Code Playgroud)
我想在messagebox中显示doubleclicked行的"ID".
怎么做?如何从此活动中获取价值?
XIV*_*ons 24
如果您处理ListView控件的MouseDown和/或MouseDoubleClick事件,并使用该HitTest方法确定鼠标操作的目标,您将知道双击了哪个项目.这也是确定是否单击了任何项目的好方法(例如,单击部分填充列表中的空白区域.
如果单击发生,以下代码将在文本框中显示单击的项目,如果发生双击,将弹出一个带有双击项目名称的消息框.
如果单击或双击发生在未由项填充的列表视图的区域中,则文本框或消息框会通知yopu该事实.
这是一个微不足道的例子,根据您的需要,您将不得不捣乱它.
更新:我添加了一些代码,当单击或双击列表的空白区域时,它会清除Listview控件的SelectedItems属性.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
listView1.MouseDown += new MouseEventHandler(listView1_MouseDown);
listView1.MouseDoubleClick += new MouseEventHandler(listView1_MouseDoubleClick);
this.Load += new EventHandler(Form1_Load);
}
void Form1_Load(object sender, EventArgs e)
{
this.SetupListview();
}
private void SetupListview()
{
ListView lv = this.listView1;
lv.View = View.List;
lv.Items.Add("John Lennon");
lv.Items.Add("Paul McCartney");
lv.Items.Add("George Harrison");
lv.Items.Add("Richard Starkey");
}
void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
ListViewHitTestInfo info = listView1.HitTest(e.X, e.Y);
ListViewItem item = info.Item;
if (item != null)
{
MessageBox.Show("The selected Item Name is: " + item.Text);
}
else
{
this.listView1.SelectedItems.Clear();
MessageBox.Show("No Item is selected");
}
}
void listView1_MouseDown(object sender, MouseEventArgs e)
{
ListViewHitTestInfo info = listView1.HitTest(e.X, e.Y);
ListViewItem item = info.Item;
if (item != null)
{
this.textBox1.Text = item.Text;
}
else
{
this.listView1.SelectedItems.Clear();
this.textBox1.Text = "No Item is Selected";
}
}
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*kin 20
试试这个:
private void lvLista_DoubleClick(object sender, EventArgs e)
{
MessageBox.Show(lvLista.SelectedItems[0].SubItems[0].Text);
}
Run Code Online (Sandbox Code Playgroud)
小智 6
我知道这个帖子很旧,但在我看来,这里没有人正确回答了这个问题。对于将来的人,请从MSDN尝试此操作:
this.myListView.Activation = System.Windows.Forms.ItemActivation.TwoClick;
this.myListView.ItemActivate += new
System.EventHandler(this.myListView_ItemClick);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44213 次 |
| 最近记录: |