gpt4 book ai didi

c# - datagridview鼠标悬停事件如何判断你在哪一列

转载 作者:行者123 更新时间:2023-11-30 16:52:01 24 4
gpt4 key购买 nike

当我将鼠标悬停在我的数据 GridView 控件 (dgrv1) 的列标题上时,我想显示一个工具提示。目前,我可以执行以下操作——但是——我的 datagridview 有几个列(每个工具提示都有很多文本),所以我想从鼠标悬停事件中调用一个方法。我的问题是我不知道如何捕获我悬停在哪一列上以传递给该方法。有趣的是,鼠标悬停事件在我当前的场景中选择了正确的列:

private void dgrv1_MouseHover(object sender, EventArgs e)
{
dgrv1.Columns[1].ToolTipText = "column 1";
dgrv1.Columns[2].ToolTipText = "column 2";
dgrv1.Columns[3].ToolTipText = "column 3";
}

如果我将鼠标悬停在第 1 列上——显示第 1 列的工具提示文本,第 2 列、第 3 列的工具提示文本也是如此……但不是列出 50 列(工具提示将包含相当多的文本)此处的鼠标悬停事件,我如何才能从鼠标悬停事件中调用方法并传入正确的列号?

最佳答案

您不需要在悬停事件中分配列的 ToolTipText 属性。您可以简单地使用 Designer 分配它们,或者如果您希望在加载数据或加载表单事件时使用此类代码:

foreach (DataGridViewColumn c in this.dataGridView1.Columns)
{
c.ToolTipText = string.Format("Column {0}", c.Index + 1);
}

您还可以将文本分配给单元格的 ToolTip 属性:

this.dataGridView1.Rows[0].Cells[0].ToolTipText = "Some text"

但是如果你想知道鼠标悬停在什么列和行上,你可以使用HitTest DataGridView的方法:

private void dataGridView1_MouseHover(object sender, EventArgs e)
{
var p = this.dataGridView1.PointToClient(Cursor.Position);
var info = this.dataGridView1.HitTest(p.X, p.Y);

//You can use this values
//info.ColumnX
//info.RowY
//info.ColumnIndex
//info.RowIndex
}

请注意,对于列标题单元格,RowIndex 为 -1,对于行标题单元格,ColumnIndex 为 -1。

关于c# - datagridview鼠标悬停事件如何判断你在哪一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com