web-dev-qa-db-ja.com

マウスがその上にあるときにdatagridview行のすべてのアイテムのツールヒントを表示する

特定の行のアイテムの上にマウスを置いたときに、datagridviewのすべてのアイテムのdatagridviewのツールチップを表示するにはどうすればよいですか?

列を持つテーブルproductがあります:

product name 
product price 
product description
product image ....

列にdatagridviewが必要であり、データベースからこれらを取得する必要があります。

product name 
product price 
product image ....

次に、このようなツールチップを表示します。製品画像の上にマウスを置くと、その製品の製品説明が表示されます。これをすべての行で行いたいです。誰もこれを助けてくれますか?

29
Enigma State

DataGridViewCell.ToolTipTextプロパティ を見て、DataGridViewのCellFormattingイベントを使用してこのプロパティ値を設定します。イベントのDataGridViewCellFormattingEventArgsColumnIndexプロパティを使用して、ツールチップを設定する列に対してイベントが発生しているかどうかを判断できます。その場合は、イベントの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に設定します。ただし、他のオプションもあります。

42
Jay Riggs

datagridviewに入力するときは、セルのTooltipTextプロパティを表示するテキストに設定するだけです。

5
ThunderGr

これを行うには、各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));
    }
}
4
Peladao