c#で非表示の行を再表示したくプログラムを考えましたがうまくいきません。
e.RowIndexで赤い波線がでてエラーとなってしまいます。
private void buttonRestore_Click(object sender, EventArgs e) { // 非表示の行を再表示 DataGridViewCheckBoxCell cell = (DataGridViewCheckBoxCell)dataGridView1[0, e.RowIndex]; if (cell.Value.ToString() == "False") { dataGridView1.Rows[e.RowIndex].SetValues(false); dataGridView1.Rows[e.RowIndex].Visible = true; }
e.RowIndexはdatagridviewのメソッドの中でしか使うことができないのでしょうか?
ボタンをクリックすることで、非表示にしたものを再表示する場合どのようなプロパティを使えばよいか検討がつかないので、ヒントをいただければ幸いです。
ーーーーーーーーーーーーーー
開発環境 visual studio 2022
OS: windows11
.NET framwork Windows form application
ーーーーーーーーーーーーーー
情報不足です。せめて何を作っているか(WinForms? WPF? その他?)と開発環境(OS, Visual Studio のバージョン、Core か .NET Framework どっちかとそのバージョンなど)ぐらいは書きましょう。
失礼しました!追記させていただきます!
何を作っているか(WinForms? WPF? その他?)と開発環境(OS, Visual Studio のバージョン、Core か .NET Framework どっちかとそのバージョンなど)をお聞きしておるのですが? たぶん聞かれても分からなくて答えられないのであろうと想像してますが、そこは調べてください。
質問に追記したのは、
> 開発環境 visual studio
> OS: windows11
ですけど、何を作っているか(WinForms? WPF? その他?)、Visual Studio のバージョン、Core か .NET Framework どっちかとそのバージョンは分からないのですか?
まず、C#では、CLI (コンソール系), Windows Forms, WPF`… といろんな種類が作れます。果てにはWeb系もできるようです。(試したことないけど)
それぞれできる範囲が違ったり、作法自体も違ったりします。なのでどういうものを作っているかも書いた方がいいです。
それと、C#でできるのは C#が提供しているのではなく、.NET Frameworkや.NET Coreといったものが提供しています。C#は『クラス』や『for文』等の構造を提供しているだけです。
その.NET Frameworkとかのバージョンによっては使えるメソッドと使えないメソッドに極端な差が出ます。
なのでそういう情報はちゃんと出しましょう。
なるほど!改めて追記します!
buttonRestore_Click で特定の行だけ再表示したいのですか、それとも非表示になっているすべての行を再表示したいのですか?
返信ありがとうございます。
非表示になっている行すべてを再表示しようとしております。
> 非表示になっている行すべてを再表示しようとしております!
buttonRestore_Click で特定の行だけ再表示したいわけではなく、非表示になっているすべての行を再表示したいということを、質問欄を編集して追記願います。
以下のようにしたらどうなりますか? 未検証ですが、試してみてください。
foreach (var row in dataGridView1.Rows)
{
((DataGridViewRow)row).Visible = true;
}
返信ありがとうございます。!
いただいたコードで非表示にしていた行を再表示することができました
記述方法、大変勉強になりました。ありがとうございます!
解決したようで何よりです。ところで消す方は問題なかったのでしょうか? 先頭に ▶ が表示されている行を消そうとすると例外がスローされると思うのですが・・・
消す方というのは、非表示ということでしょうか?
行の非表示再表示に関しましては、問題なく動いております!
すいません! ▶の意味がやっとわかりました。こちらの ▶を非表示にしていたようです。
>先頭に ▶ が表示されている行を消そうとすると例外がスローされると思うのですが・・・
→問題なく動作します。ありがとうございます!
質問者さん、解決したそうですので、このスレッドはクローズ願います。ご自分で解答欄に解決した方法・コードを書いて、それにマークをつけることでクローズできます。
了解しました!
回答3件
あなたの回答
tips
プレビュー