C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: DataViewGridでツールチップ表示時のセルについて


(過去ログ 61 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■35162 / inTopicNo.1)  DataViewGridでツールチップ表示時のセルについて
  
□投稿者/ プリ太 (7回)-(2009/04/21(Tue) 13:46:56)

分類:[C#] 

環境はWinXP VS2005です。

ツールチップ表示機能を持たせたDataViewGridコントロールのセルに文字を表示させる方法を教えてください。


DataGridView上に、現在のセル位置を表示するツールチップを作成中です。
ツールチップは、
DataViewGridコントロールのVirtualModeプロパティをTrueにし、CellToolTipTextNeededイベント関数を作ったら、表示されるようになりました。

その後、セルに文字を設定&セルの背景色を変更の処理をCellClickイベントに記載し、実行したところ、
背景色の変更はできたのですが、設定した文字が表示されませんでした。
文字の設定が出来ていないのかと思い、文字の設定
dgv[e.ColumnIndex, e.RowIndex].Value = "Click";
の後に、
string nStr = dgv[e.ColumnIndex, e.RowIndex].Value.ToString();
で確認したところ、dgv[e.ColumnIndex, e.RowIndex].Valueの値がnullになっていました。

いろいろ試してみたところ、
DataViewGridコントロールのVirtualModeプロパティをFalseに戻すと、
値も設定され、セルに表示されるようになったのですが、これだとツールチップは表示されません。
そこで、CellClickイベントの始めと終わりにVirtualModeプロパティの切り替えを追加して実行したところ、
ツールチップは表示されるようになりましたが、クリックイベントで設定した文字は表示されませんでした。
確認で入れた
string nStr = dgv[e.ColumnIndex, e.RowIndex].Value.ToString();
でnStrには"Click"の値が入るのですが、画面上には反映されないようです。

ツールチップの表示を設定すると、
dgv[e.ColumnIndex, e.RowIndex].Value = "Click";
では文字の設定や表示はできないのでしょうか?

宜しくお願いします。
引用返信 編集キー/
■35181 / inTopicNo.2)  Re[1]: DataViewGridでツールチップ表示時のセルについて
□投稿者/ カドルドエグ (79回)-(2009/04/21(Tue) 16:30:42)
No35162 (プリ太 さん) に返信
以下の環境、コードで
セルクリック時の値変換も背景色変更もツールチップ表示もできました。

OS:Windows XP
IDE:VS2005(C#)
フォームの中身:DataGridView×1
DataGridViewの設定:
AllowUserToAddRows = False
AllowUserToDeleteRows = False
ReadOnly = True
VirtualMode = False

サンプルコード--------------------------
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DataTable table = new DataTable();
            table.Columns.Add("C1");
            table.Columns.Add("C2");
            table.Columns.Add("C3");
            table.Rows.Add("asfadfs", "qgggg", "45yg");
            table.Rows.Add("214325443", "45554", "45tg");
            table.Rows.Add("f34f345t", "ttthgt", "erger");

            this.dataGridView1.DataSource = table;
        }

        private void dataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
        {
            e.ToolTipText = "てすと";
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = String.Format("今ココ!{0} - {1}", e.RowIndex, e.ColumnIndex);
            this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.Red;
        }      

    }
----------------------------------------


引用返信 編集キー/
■35193 / inTopicNo.3)  Re[2]: DataViewGridでツールチップ表示時のセルについて
□投稿者/ プリ太 (8回)-(2009/04/21(Tue) 19:35:28)
カドルドエグ さん、ありがとうございます。

サンプルの、
> DataTable table = new DataTable();
> table.Columns.Add("C1");
> table.Columns.Add("C2");
> table.Columns.Add("C3");
> table.Rows.Add("asfadfs", "qgggg", "45yg");
> table.Rows.Add("214325443", "45554", "45tg");
> table.Rows.Add("f34f345t", "ttthgt", "erger");
>
> this.dataGridView1.DataSource = table;
の部分をLoad時に追加してみたら、文字設置もツールチップ表示もできました。
上記部分をコメントにすると、VirtualMode = Falseのため、CellToolTipTextNeededイベントが発生しないので、ツールチップは表示されませんでした。

DataTableの設定で何が変わるのでしょうか?
#[32,10]の空セルを設定すれば出来るということでしょうか。。。
引用返信 編集キー/
■35195 / inTopicNo.4)  Re[1]: DataViewGridでツールチップ表示時のセルについて
□投稿者/ 魔界の仮面弁士 (1049回)-(2009/04/21(Tue) 21:02:51)
No35162 (プリ太 さん) に返信
> その後、セルに文字を設定&セルの背景色を変更の処理をCellClickイベントに記載し、実行したところ、
> 背景色の変更はできたのですが、設定した文字が表示されませんでした。

CellValueNeeded イベントには、どのように記述したのでしょうか?


No35193 (プリ太 さん) に返信
> VirtualMode = Falseのため、CellToolTipTextNeededイベントが発生しないので、ツールチップは表示されませんでした。
> DataTableの設定で何が変わるのでしょうか?

CellToolTipTextNeeded イベントが発生するのは、
  「DataSource プロパティが設定されている場合」
  「VirtualMode プロパティが true の場合」
のいずれかだけですね。
引用返信 編集キー/
■35391 / inTopicNo.5)  Re[2]: DataViewGridでツールチップ表示時のセルについて
□投稿者/ プリ太 (9回)-(2009/04/28(Tue) 15:27:11)
魔界の仮面弁士 さん、ありがとうございます。
出張中だったため、確認が遅くなり申し訳ありません。

結局、ループを使ってDataTableに空セルを作成し、
VirtualMode = Falseで、CellToolTipTextNeededにToolTip表示内容について記述しました。
すると、クリックイベントで希望通りの動作をさせることができました。


> CellValueNeeded イベントには、どのように記述したのでしょうか?

CellValueNeeded イベントには何も記述していません。
というか、イベント関数を作成していませんでした。


> CellToolTipTextNeeded イベントが発生するのは、
>   「DataSource プロパティが設定されている場合」
>   「VirtualMode プロパティが true の場合」
> のいずれかだけですね。

ということなのですね。
なので、はじめ表示されなかったのは正しく、DataSourceプロパティを設定すると表示されるようになったのは
ちゃんとした動作だったようです。
#調べ方が甘かったようです。すみません。

ありがとうございました。
解決済み
引用返信 編集キー/
■35397 / inTopicNo.6)  Re[3]: DataViewGridでツールチップ表示時のセルについて
□投稿者/ 魔界の仮面弁士 (1052回)-(2009/04/28(Tue) 16:15:17)
No35391 (プリ太 さん) に返信
>>CellValueNeeded イベントには、どのように記述したのでしょうか?
> CellValueNeeded イベントには何も記述していません。
> というか、イベント関数を作成していませんでした。

VirtualMode を使うのであれば、イベントを処理しなければなりません。

[Windows フォーム DataGridView コントロールでの仮想モード]
http://msdn.microsoft.com/ja-jp/library/ms171622.aspx

》 仮想モードを実装するには、VirtualMode プロパティを true に設定し、
》 ここで説明するイベントのうち 1 つ以上のイベントを処理します。
》 通常、少なくとも CellValueNeeded イベントだけは処理します。



> なので、はじめ表示されなかったのは正しく、DataSourceプロパティを設定すると表示されるようになったのは
> ちゃんとした動作だったようです。

そもそも、何のために VirtualMode プロパティを True にしていたのでしょうか?
解決済み
引用返信 編集キー/
■35402 / inTopicNo.7)  Re[4]: DataViewGridでツールチップ表示時のセルについて
□投稿者/ プリ太 (10回)-(2009/04/28(Tue) 17:08:33)
魔界の仮面弁士 さん こんにちは。

> VirtualMode を使うのであれば、イベントを処理しなければなりません。
> 》 仮想モードを実装するには、VirtualMode プロパティを true に設定し、
> 》 ここで説明するイベントのうち 1 つ以上のイベントを処理します。
> 》 通常、少なくとも CellValueNeeded イベントだけは処理します。

なるほど。
このHPは見てませんでした。


> そもそも、何のために VirtualMode プロパティを True にしていたのでしょうか?

参考にしたHPにToolTipを多数のセルに表示する場合は、CellToolTipTextNeededを使うと良い、とあり、
このイベントはVirtualModeプロパティがTrueのときにしか発生しない、とあったので、
その通りにしてみました。
参考にしたのは、↓です。
http://dobon.net/vb/dotnet/datagridview/showcelltooltips.html
#今読み直してみたら「ただしこのイベントは、DataSourceプロパティが設定されているか、VirtualModeプロパティがTrueの時にしか発生しません。」
#と、ありました。読み落としてました(^^;A
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -