人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

.NETのDataGridViewについての質問です。

DataGridViewのMultiSelectプロパティをtrueにすると、複数のセルや列がCTRL+左クリックで選択できるようになります。

これを、左クリックのみで選択・非選択を切り替えるようにはできないでしょうか?

右クリックで切り替える方法はできたのですが、左クリックの場合、イベントの処理を行う前に勝手に選択をしてしまうので、うまく切り替えが出来ません。

もしソースコードを張っていただけれるのであれば、C#かVBでいただけたらありがたいです。

よろしくお願いします。

●質問者: hayama5
●カテゴリ:コンピュータ
✍キーワード:.NET C# VB イベント クリック
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● thrillseeker
●35ポイント

以下で出来ました。C# です。

選択対象のセルをフォームのメンバ変数 cellCollection として定義しておき、

CellMouseUp イベントの度に内容を更新して Select プロパティを変更しています。

Collection<DataGridViewCell> cellCollection = new Collection<DataGridViewCell>();

private void dataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridViewSelectedCellCollection selectedCells = dataGridView1.SelectedCells;

foreach (DataGridViewCell cell in selectedCells)
{
if (cellCollection.Contains(cell))
{
cellCollection.Remove(cell);
cell.Selected = false;
}
else
{
cellCollection.Add(cell);
}
}

foreach (DataGridViewCell cell in cellCollection)
{
cell.Selected = true;
}
}
◎質問者からの返答

回答ありがとうございます。

ただ、一つ残念なことが…これですと

画面が選択するたびにちらついてしまいますよね。

列選択ができればいいのですが、何か良い方法ありますでしょうか?


2 ● thrillseeker
●35ポイント

追記:

using System.Collections.ObjectModel;

が必要です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ