特定の行のアイテムの上にマウスを置いたときに、datagridview
のすべてのアイテムのdatagridview
のツールチップを表示するにはどうすればよいですか?
列を持つテーブルproduct
があります:
product name
product price
product description
product image ....
列にdatagridview
が必要であり、データベースからこれらを取得する必要があります。
product name
product price
product image ....
次に、このようなツールチップを表示します。製品画像の上にマウスを置くと、その製品の製品説明が表示されます。これをすべての行で行いたいです。誰もこれを助けてくれますか?
DataGridViewCell.ToolTipTextプロパティ を見て、DataGridViewのCellFormatting
イベントを使用してこのプロパティ値を設定します。イベントのDataGridViewCellFormattingEventArgs
ColumnIndex
プロパティを使用して、ツールチップを設定する列に対してイベントが発生しているかどうかを判断できます。その場合は、イベントのRowIndex
を使用して指定しますそのツールチップの価値。
私がリンクしたMSDN記事のサンプルには、使用法の良い例がありますが、コードは次のようになります。
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
if (e.ColumnIndex == dataGridView1.Columns[nameOrIndexOfYourImageColumn].Index) {
var cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
// Set the Cell's ToolTipText. In this case we're retrieving the value stored in
// another cell in the same row (see my note below).
cell.ToolTipText = dataGridView1.Rows[e.RowIndex].Cells[nameOrIndexOfYourDescriptionColumn].Value.ToString();
}
}
どこ:nameOrIndexOfYourImageColumn
=画像列の列名またはインデックス値nameOrIndexOfYourDescriptionColumn
=説明データを含む列名またはインデックス値。
注:行の説明データを取得するには何らかの方法が必要です。これを行う一般的な方法は、DataGridViewに列を配置することですが、この列を表示したくないので、Visible
プロパティをfalseに設定します。ただし、他のオプションもあります。
datagridview
に入力するときは、セルのTooltipText
プロパティを表示するテキストに設定するだけです。
これを行うには、各Tag
プロパティのDataGridViewCell
プロパティの各セルのツールチップに表示するテキストを保存します。
次に、DataGridView.CellMouseEnter
イベントで、マウスがDataGridViewCellEventArgs.ColumnIndex
およびDataGridViewCellEventArgs.RowIndex
値を使用しているセルを確認し、ToolTip.SetToolTip
を使用して対応するセルのテキストをツールチップテキストとして設定できます。 。
かなりうまくいくなら。
このようなもの:
private void dgv_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex >= 0 & e.RowIndex >= 0)
{
ToolTip1.SetToolTip(dgv, Convert.ToString(dgv.Item(e.ColumnIndex, e.RowIndex).Tag));
}
}