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

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

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

DataGridViewの選択状態を保持したい

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

■95145 / inTopicNo.1)  DataGridViewの選択状態を保持したい
  
□投稿者/ かつお節味噌汁 (1回)-(2020/06/25(Thu) 12:27:11)

分類:[C#] 

VS2019 / C# / Windowsフォームアプリケーション

Windowsフォームアプリケーション内にあるテキストボックスやコンボボックスに入力(選択)した値を、
ツールボックスで作成した新規登録ボタン(INSERTの処理)・更新ボタン(UPDATEの処理)で
テーブルにデータを書き込むことを目的とした業務システムのようなものを作成中です。

現状の操作の流れとして
@ DataGridViewの行を選択する。
A「選択行のデータを取得」ボタンを押下し、テキストボックスやコンボボックスに値が反映される。
B テキストボックス・コンボボックスの値を変え、更新ボタン(UPDATEの処理)を押下し、
  datagridviewを最新の表示にしたいためSELECTの処理が走る。

Bが完了し、@で選択していた行が解除されます。
理想では、@で選択状態の行をBの後でも解除しないようにしたいです。

選択が解除されない方法として、Bの処理前に選択行を保存しておき、
Bが実行された後に、復元するという処理にしたいのですが
継承?(オーバーライド)というものをよくわかっておらず
どのように処理をかけばよろしいのでしょうか。
引用返信 編集キー/
■95146 / inTopicNo.2)  Re[1]: DataGridViewの選択状態を保持したい
□投稿者/ kiku (178回)-(2020/06/25(Thu) 12:35:43)
No95145 (かつお節味噌汁 さん) に返信
> 選択が解除されない方法として、Bの処理前に選択行を保存しておき、
> Bが実行された後に、復元するという処理にしたいのですが
> 継承?(オーバーライド)というものをよくわかっておらず
> どのように処理をかけばよろしいのでしょうか。

アプリから任意の行を選択することができます。
下記が参考になると思います。
https://dobon.net/vb/dotnet/datagridview/selectedcells.html
引用返信 編集キー/
■95156 / inTopicNo.3)  Re[2]: DataGridViewの選択状態を保持したい
□投稿者/ かつお節味噌汁 (2回)-(2020/06/25(Thu) 22:50:40)
No95146 (kiku さん) に返信
> ■No95145 (かつお節味噌汁 さん) に返信
>>選択が解除されない方法として、Bの処理前に選択行を保存しておき、
>>Bが実行された後に、復元するという処理にしたいのですが
>>継承?(オーバーライド)というものをよくわかっておらず
>>どのように処理をかけばよろしいのでしょうか。
>
> アプリから任意の行を選択することができます。
> 下記が参考になると思います。
> https://dobon.net/vb/dotnet/datagridview/selectedcells.html

申し訳ございません。
参考サイトを元に書いてみたのですが、どうも
理解が及ばず選択状態を維持することがかないません。
よろしければ他の参考サイトや、アドバイスを頂けると幸いです。
引用返信 編集キー/
■95157 / inTopicNo.4)  Re[3]: DataGridViewの選択状態を保持したい
□投稿者/ WebSurfer (2074回)-(2020/06/26(Fri) 06:44:44)
No95156 (かつお節味噌汁 さん) に返信

そもそものやりたいことは、SQL Server などのデータベースのテーブルのレコードの
一覧表示と編集 (INSERT, DELETE, UPDATE) を Windows Forms アプリで行いたい
ということと理解しています。

であれば、DataGridView で編集操作も行うようにしてはいかがですか? 編集操作のため
別にTextBox, ComboBox を表示してそれを使うことを考えているようですが、そういう
必要はなくて、DataGridView 上で編集操作もできます。

その方がユーザーにとって直感的で操作しやすいだけでなく、アプリの作成も Visual
Studio のウィザードを使って容易にできます。

特にどうしても編集に TextBox, ComboBox を使わなければならない事情がなければ、
すべての操作を DataGridView で行うよう方針変更しては?
引用返信 編集キー/
■95159 / inTopicNo.5)  Re[3]: DataGridViewの選択状態を保持したい
□投稿者/ 大谷刑部 (84回)-(2020/06/26(Fri) 10:51:08)
No95156 (かつお節味噌汁 さん) に返信
> ■No95146 (kiku さん) に返信
>>■No95145 (かつお節味噌汁 さん) に返信
> >>選択が解除されない方法として、Bの処理前に選択行を保存しておき、
> >>Bが実行された後に、復元するという処理にしたいのですが
> >>継承?(オーバーライド)というものをよくわかっておらず
> >>どのように処理をかけばよろしいのでしょうか。
>>
>>アプリから任意の行を選択することができます。
>>下記が参考になると思います。
>>https://dobon.net/vb/dotnet/datagridview/selectedcells.html
>
> 申し訳ございません。
> 参考サイトを元に書いてみたのですが、どうも
> 理解が及ばず選択状態を維持することがかないません。

どのイベントで処理を記載してますか?
行選択状態からなら、グリッドのプロパティーがデフォルトの設定なら、グリッド以外にフォーカスが移っても選択は維持され、
なさりたいことはできると思います。
解除の方も上記サイトに説明が載っているので必要な情報はそろってるはずです。
どうダメなのか具体的に書かないと答えようがないと思いますが。
それに、回答者に対して、失礼な言いぐさですよ。




引用返信 編集キー/
■95162 / inTopicNo.6)  Re[3]: DataGridViewの選択状態を保持したい
□投稿者/ kiku (180回)-(2020/06/26(Fri) 12:36:53)
No95156 (かつお節味噌汁 さん) に返信
> ■No95146 (kiku さん) に返信
>>■No95145 (かつお節味噌汁 さん) に返信
> 申し訳ございません。
> 参考サイトを元に書いてみたのですが、どうも
> 理解が及ばず選択状態を維持することがかないません。
> よろしければ他の参考サイトや、アドバイスを頂けると幸いです。

簡単なサンプルを作ってみました。
ボタンを押下すると、2行目が選択されます。

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            // カラム数を指定
            dataGridView1.ColumnCount = 4;

            // カラム名を指定
            dataGridView1.Columns[0].HeaderText = "教科";
            dataGridView1.Columns[1].HeaderText = "点数";
            dataGridView1.Columns[2].HeaderText = "氏名";
            dataGridView1.Columns[3].HeaderText = "クラス名";

            // データを追加
            dataGridView1.Rows.Add("国語", 90, "田中 一郎", "A");
            dataGridView1.Rows.Add("数学", 50, "鈴木 二郎", "A");
            dataGridView1.Rows.Add("英語", 90, "佐藤 三郎", "B");

            //DataGridView1でセル、行、列が複数選択されないようにする
            dataGridView1.MultiSelect = false;
            
            //セルを選択すると行全体が選択されるようにする
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //インデックス1の行を選択する
            dataGridView1.Rows[1].Selected = true;
        }
    }

引用返信 編集キー/
■95163 / inTopicNo.7)  Re[4]: DataGridViewの選択状態を保持したい
□投稿者/ kiku (181回)-(2020/06/26(Fri) 12:55:43)
2020/06/26(Fri) 12:57:06 編集(投稿者)
No95162 (kiku さん) に返信
> ■No95156 (かつお節味噌汁 さん) に返信
>>■No95146 (kiku さん) に返信
> >>■No95145 (かつお節味噌汁 さん) に返信
>>申し訳ございません。
>>参考サイトを元に書いてみたのですが、どうも
>>理解が及ばず選択状態を維持することがかないません。
>>よろしければ他の参考サイトや、アドバイスを頂けると幸いです。

名前で検索したければこんな感じ

        private void button2_Click(object sender, EventArgs e)
        {
            foreach(DataGridViewRow row in dataGridView1.Rows)
            {
                //インデクス2の名前を取得する
                var name = (string)row.Cells[2].Value;
                if(name == "佐藤 三郎")
                {
                    row.Selected = true;
                    break;
                }
            }
        }

引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ