確保您使用的CellToolTipTextNeeded事件的ToolTipText屬性來設置你的細胞的工具提示文本。當控件顯示大小不能完全顯示其值的單元格的工具提示時,此設置將覆蓋顯示的默認文本。
試試我所看到的。使用適用於所有DGV單元的數據加載DGV。驗證沒有單元格工具提示正在顯示。調整列的大小,以便不顯示某些單元格的文本,並驗證該單元格的值是否出現在單元格的工具提示中。現在將以下代碼添加到DGV的CellToolTipTextNeeded事件中:
e.ToolTipText = string.Format("Hello, I'm on row '{0}', column '{1}'", e.RowIndex, e.ColumnIndex);
重複上述測試。您會注意到顯示了自定義工具提示文本,並且不顯示用於顯示已調整大小的單元格文本的默認工具提示。還請記住CellToolTipTextNeeded事件的RowIndex和ColumnIndex屬性(如上所示);請注意CellToolTipTextNeeded事件的RowIndex和ColumnIndex屬性(如上所示);請注意CellToolTipTextNeeded事件的RowIndex和ColumnIndex屬性。您可能會發現這些方法可以方便地檢索要用於工具提示文本的文本,或者確定是否要顯示工具提示。
UPDATE
我開發了一個基於您發佈的代碼的示例。放一個按鈕和一個TabControl(命名爲tabs
)在一個乾淨的Winform(3.5),並使用下面的代碼形式:
using System;
using System.Data;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
PopulateTabs();
}
private DataSet GetDataSet() {
DataSet ds = new DataSet();
var dt1 = new DataTable("dt 1");
dt1.Columns.Add("dt1 Field1");
dt1.Columns.Add("dt1 Field2");
dt1.Rows.Add(new object[] { "dt1f1r1", "dt1f2r1" });
dt1.Rows.Add(new object[] { "dt1f1r2", "dt1f2r2" });
dt1.Rows.Add(new object[] { "dt1f1r3", "dt1f2r3" });
var dt2 = new DataTable("dt 2");
dt2.Columns.Add("dt2 Field1");
dt2.Columns.Add("dt2 Field2");
dt2.Columns.Add("dt2 Field3");
dt2.Rows.Add(new object[] { "dt2f1r1", "dt2f2r1", "dt2f3r1" });
dt2.Rows.Add(new object[] { "dt2f1r2", "dt2f2r2", "dt2f3r2" });
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
return ds;
}
private void PopulateTabs() {
tabs.Visible = true;
tabs.TabPages.Clear();
DataSet results_ = GetDataSet();
foreach (DataTable dt in results_.Tables) {
if (dt.Rows.Count == 0)
continue;
TabPage tab = new TabPage(dt.TableName);
DataGridView dgv = new DataGridView();
dgv.DataSource = dt.DefaultView;
dgv.Name = dt.TableName;
dgv.Dock = DockStyle.Fill;
dgv.SelectionChanged += new EventHandler(dgv_SelectionChanged);
dgv.RowHeadersVisible = false;
// if (dt.TableName == Recon.ControlEvalResultsTablename || dt.TableName == Recon.TestEvalResultsTablename)
// dgv.RowPostPaint += new DataGridViewRowPostPaintEventHandler(dgv_RowPostPaint);
// else
// {
dgv.CellToolTipTextNeeded += new DataGridViewCellToolTipTextNeededEventHandler(dgv_CellToolTipTextNeeded);
dgv.CellFormatting += new DataGridViewCellFormattingEventHandler(dgv_CellFormatting);
// }
tab.Controls.Add(dgv);
tabs.TabPages.Add(tab);
}
}
void dgv_SelectionChanged(object sender, EventArgs e) {
//throw new NotImplementedException();
}
void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
//throw new NotImplementedException();
}
void dgv_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e) {
e.ToolTipText = string.Format("Hello, I'm on row '{0}', column '{1}'", e.RowIndex, e.ColumnIndex);
}
}
}
上述工作對我來說 - 只出現我明確設置工具提示文本。如果上面的演示適用於您,請嘗試禁用真實代碼的各個部分,直到您完全掌握所有代碼,然後開始重新排列,直到出現問題。
我絕對設置ToolTipText屬性,我仍然需要兩次鼠標懸停。值得說的是,網格正在創建和編程添加?我在 – 2011-06-08 19:21:07
之上添加了一些代碼@claxxical使用您的代碼更新了我的答案。讓我知道你發現了什麼... – 2011-06-09 00:19:58