.NETでWinFormアプリをC#で製作中です。
Visual Studio Community 2017を使用しています。
アプリ実行中に、DedaGridViewで複数のセルを選択して文字列を入力した際に、最後に選択したセルだけ入力が反映されます。
この時、他に選択していたセルにも今入力した値を反映させたいと思っています。
そこで検索して出てきたのが全く同じ内容の質問のこちらです。
https://oshiete.goo.ne.jp/qa/7455090.html
こちらでの回答をヒントに試しているのですが‥
具体的にどう記述すれば良いのかが分からず困っています。。
分からないことは大きく二つありまして‥
①CellValueChangedイベント内でまず選択中のセルの値をstring型の変数 s にでも入れておき‥
SelectedCellsでSelectedRowsで選択中の行番号をforeachで List<int> にでも入れていって‥
さらにforeachで List のindexに対応するセルのValueに s を代入する感じでしょうか?
どのような流れで処理するのが良いのでしょうか?
②また、CellValueChangedイベントで記述するとアプリ起動時にCSVに保存していた表データを読み込む際にも処理が走ってしまうようなので、これは表を全て読み込んでからイベントを有効にしたら良
い感じでしょうか。
this.dgv.CellValueChanged -= new DataGridViewCellEventHandler(dgv_CellValueChanged);
このような感じの記述を、Form1のコンストラクタ内に記述しても、Form1_Load内に記述しても、イベントが走ってしまいます。
どのように有効・無効を切り替えれば良いのでしょうか?
アドバイスありましたらぜひお願いします。m(_ _)m
No.1ベストアンサー
- 回答日時:
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (ChangeCancel == false)
{
// 複数選択されていたら処理する
if (dataGridView1.SelectedCells.Count > 1)
{
// 値変更で再帰的に呼び出された時に処理しないようにフラグ設定
ChangeCancel = true;
// 選択セル全部が対象(イベント発行の契機になったセルも含むが無視)
for(int i = 0;i < dataGridView1.SelectedCells.Count;i++)
{
// 選択セルの値をイベント発行のセルの値に設定
dataGridView1.SelectedCells[i].Value = dataGridView1[e.ColumnIndex, e.RowIndex].Value;
}
// 処理終わったのでフラグ解除
ChangeCancel = false;
}
}
}
こんな感じでしょうかね?
②に関してはcsvファイルの読み込み開始時に
ChangeCancel = true;
して、読み込み完了後に
ChangeCancel = false;
とでもすればよいのではないでしょうか?
# 選択セルが2個以上で上記のループが回るので、csv読み込み前に選択セルをキャンセルする…という手もありますけど。
# 起動時以外でcsv読み込みするならば、その手は使えないかも知れませんが。
ちなみに、ChangeCancelは
private bool ChangeCancel;
とでもしてフォームのフィールドにしてください。
Wr5さん、丁寧にご回答いただいてありがとうございます!
できました!!
なるほど、コレクションで取得してforで回して一気に入力してやれば良かったのですね。。
また、イベント自体を有効・無効にするのではなく、中身をifで処理が走る・走らないを切り替えてやれば良かったのですね。。
教えていただくとシンプルな答えなのですが、頭に浮かびませんでした。。
お陰さまでひとつ賢くなりました‥!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Visual Basic(VBA) エクセル VBAで複数セル選択時エラーになる問題 3 2022/10/04 02:40
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) excelで可視セルのみ置換 3 2022/08/04 11:02
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
DataGridView 複数行同時変更について
C言語・C++・C#
-
C# dataGridViewの値だけクリア
C言語・C++・C#
-
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
-
4
C# DataGridView のヘッダーセル中央揃え
C言語・C++・C#
-
5
DataGridViewの各セル幅を自由に決め、その幅で固定したい
Visual Basic(VBA)
-
6
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
7
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
8
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
9
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
10
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
11
DataGridViewでグリッド内に線を引きたい
Visual Basic(VBA)
-
12
データグリッドビューの結合セルに文字を表示させたい
Visual Basic(VBA)
-
13
DataGrdViewに関連付けたデータの更新
C言語・C++・C#
-
14
【C#】DataGridViewの最大列数について
システム
-
15
GridViewでハイライトを使用しない方法
Visual Basic(VBA)
-
16
DataGridView 列ごとの入力制限
Visual Basic(VBA)
-
17
DataGridViewのセル編集完了後に値を設定するには
Visual Basic(VBA)
-
18
DataGridViewに空白がある場合はエラーにしたい
Visual Basic(VBA)
-
19
DataGridViewで表示に制限をつけたい。
Visual Basic(VBA)
-
20
VB2005 DataGridView上でクリックを無効にする方法はありますか?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の色のついたセルを削除
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
【VBA】【ユーザーフォーム_Lis...
-
EXCEL VBA 文中の書式ごと複写...
-
【Excel VBA】一番右端セルまで...
-
CellEnterイベント仕様について
-
エクセル、マクロで番号を読込...
-
Excel 範囲指定スクショについ...
-
入力規則のリスト選択
-
Excel VBAでCheckboxの名前を変...
-
EXCEL VBA:結合セルのデータを...
-
VBA:日付を配列に入れ別セルに...
-
【VBA】写真の貼り付けコードが...
-
For~Next ループ内でUnionメソ...
-
Excelで空白セル直前のセルデー...
-
C# DataGridViewで複数選択した...
-
Excel VBA IF文がうまく動作し...
-
Excel VBA でFunctionプロシジ...
-
VBA deleteをクリックすると型...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
Excelで空白セル直前のセルデー...
-
Excel UserForm の表示位置
-
【Excel VBA】一番右端セルまで...
-
C# DataGridViewで複数選択した...
-
特定の色のついたセルを削除
-
VBA:日付を配列に入れ別セルに...
-
【VBA】写真の貼り付けコードが...
-
EXCEL VBA 文中の書式ごと複写...
-
Excel 範囲指定スクショについ...
-
入力規則のリスト選択
-
複数指定セルの可視セルのみを...
-
Excel VBAでCheckboxの名前を変...
-
【VBA】【ユーザーフォーム_Lis...
-
DataGridViewでグリッド内に線...
-
CellEnterイベント仕様について
-
下記のマクロの説明(意味)を...
-
DataGridViewのフォーカス遷移...
-
VBA にて、条件付き書式で背景...
おすすめ情報