ListViewHitTestInfo.Item.SubItems.IndexOf给出错误的值

时间:2015-06-30 08:28:00

标签: c# .net winforms

我有一个Listview,我想在用户双击最后一列(index = 7)时做出反应。

我正在使用以下代码:

Point mousePos = this.lvInfo.PointToClient(Control.MousePosition);
ListViewHitTestInfo hitTest = this.lvInfo.HitTest(mousePos);
int columnIndex = hitTest.Item.SubItems.IndexOf(hitTest.SubItem);
if (columnIndex == 7)
    MessageBox.Show("Test!");

我的columnIndex值得错了,无法找出原因。 即使我总是点击同一列,这些值似乎也会改变。

1 个答案:

答案 0 :(得分:0)

我尝试了这种不同的方法,它运作得很好。

private void lvInfo_MouseUp(object sender, MouseEventArgs e)
{
    this.X = e.X;
    this.Y = e.Y;
}

private void lvInfo_DoubleClick(object sender, EventArgs e)
{
    // if double clicked on gas column open dialog for entering new gas value
    Point mousePos = new Point(this.X,this.Y);
    ListViewHitTestInfo info = lvInfo.HitTest(mousePos);
    int colNr = info.Item.SubItems.IndexOf(info.SubItem);
    if (colNr == 7)
    {
        MessageBox.Show("Test");

    }
}