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

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

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

Re[4]: dataGridView自体の条件付きVisible


(過去ログ 110 を表示中)

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

■65179 / inTopicNo.1)  dataGridView自体の条件付きVisible
  
□投稿者/ 震えるひよこ (5回)-(2013/02/11(Mon) 15:31:14)

分類:[C#] 

C#2010です。

同じFormに
dataGridView1
dataGridView2
と2つ配置して使っています。

データの関係で
dataGridView1、dataGridView2
両方表示されるケースと

dataGridView1しか
データが表示されないケースがあるのですが

dataGridView1しか表示されない時に
(dataGridView2にデータが表示されない時だけ)
dataGridView2自体を表示させないようにしたいです。

dataGridViewのプロパティを見たのですが
どのプロパティが表示されないケースなのかわかりません。

dataGridView2に対して、条件つきでVisibleを使用するには
どうすればいいのかアドバイスお願いします。m(_ _)m

初歩的な質問だとは思いますが、よろしくお願いします。
引用返信 編集キー/
■65182 / inTopicNo.2)  Re[1]: dataGridView自体の条件付きVisible
□投稿者/ shu (176回)-(2013/02/11(Mon) 23:44:58)
No65179 (震えるひよこ さん) に返信

条件判定をして
Visibleにtrueとかfalseとか設定すればよいです。
引用返信 編集キー/
■65183 / inTopicNo.3)  Re[2]: dataGridView自体の条件付きVisible
□投稿者/ 震えるひよこ (6回)-(2013/02/12(Tue) 01:28:52)
No65182 (shu さん) に返信
> ■No65179 (震えるひよこ さん) に返信
> 


shuさんアドバイスありがとうございます。

> 条件判定をして
> Visibleにtrueとかfalseとか設定すればよいです。

その条件判定が分からなくて困っています。
dataGridView3に対して

private void dataGridView3_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
   {
       if (dataGridView3.RowCount == 0)
        {
          dataGridView3.Visible = false;
        }
    }

とした場合、データがないのに
dataGridView3は消えずに表示されてしまいます。
こういった場合、どのイベントを選択すればいいのですか?

引き続きアドバイス&お付き合いくださいm(_ _)m

引用返信 編集キー/
■65185 / inTopicNo.4)  Re[3]: dataGridView自体の条件付きVisible
□投稿者/ shu (177回)-(2013/02/12(Tue) 10:41:32)
No65183 (震えるひよこ さん) に返信
> private void dataGridView3_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
> {
> if (dataGridView3.RowCount == 0)
> {
> dataGridView3.Visible = false;
> }
> }
まずこのイベントにたどり着いているのか
if文の条件はtrueとなっているのか
確認してみた方がよいと思います。

データが変わるタイミングでDataGridViewの状態ではなくデータ自体のチェックを
すれば確実だと思います。
引用返信 編集キー/
■65186 / inTopicNo.5)  Re[3]: dataGridView自体の条件付きVisible
□投稿者/ howling (184回)-(2013/02/12(Tue) 10:44:51)
No65183 (震えるひよこ さん) に返信
> private void dataGridView3_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
> {
> if (dataGridView3.RowCount == 0)
> {
> dataGridView3.Visible = false;
> }
> }

まずは、ブレークポイントを付けるクセをつけてください。
エラーが起きる度に掲示板に書き込み、なぜでしょう?とやってしまうと、
プログラマーとしてやっていけなくなっちゃいますよ。
デバッグ処理も立派な仕事ですので。

そのif文はつまり、情報が無い場合にRowCountが0であるはずだ、
という予想の元に書かれたコードだと思います。
さて、本当に何も無い場合には行数は0なのでしょうか?

表示された時には何が出ていますか?
その「出ている物」は行じゃないんですか?
DataGridViewは、ヘッダを最初に作ってくれます。
ヘッダは行数に入るのでしょうか?
ここで聞かずとも、色々と自分なりに調べられることはまだまだあります。

掲示板で聞くのは良いことですし、
そのサンプルコードを書いたのは非常に良いことだと思います。
が、もう少し考えてみてはいかがでしょうか。

重ねて言いますが、デバッグ処理は重要な仕事です。
やり方を覚えてください。頑張って。
引用返信 編集キー/
■65200 / inTopicNo.6)  Re[4]: dataGridView自体の条件付きVisible
□投稿者/ 震えるひよこ (7回)-(2013/02/12(Tue) 16:46:50)
shuさん howlingさんアドバイスありがとうございます。


> if文の条件はtrueとなっているのか
> 確認してみた方がよいと思います。


データ自体のチェックをした方がいいということなので
Console.WriteLine(Daytable.Rows.Count);で見たところ、
データがない場合、'System.IndexOutOfRangeException'という
初回例外がおこっていました。(trueもfaiseもなっていない状態)

howlingさんのご指摘どおりデータがない場合、RowCountは0だと
思っていました^^;

もっと良い方法があるとは思いますが、
今回COUNTクエリでカウントさせ、

            string str = Count1table.Rows[0][0].ToString();
            int num = int.Parse(str);

            if (num < 1)
            {   //消したいデータグリッドビュー
                dataGridView3.Visible = false;
            }

とすることで、思ったとおりの動きをしてくれました。m(_ _)m


>掲示板で聞くのは良いことですし、
>そのサンプルコードを書いたのは非常に良いことだと思います。
>が、もう少し考えてみてはいかがでしょうか。

>重ねて言いますが、デバッグ処理は重要な仕事です。
>やり方を覚えてください。頑張って。

まだ始めたばかりで勉強の仕方自体分かってなかったので
お二方のアドバイス本当に助かりました。
ありがとうございました。m(_ _)m

少しずつデバッグ処理も勉強していきたいと思います。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -