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


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

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

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

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

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2007/10/13 12:30:11
  • 終了:2007/10/20 12:35:03

回答(2件)

id:thrillseeker No.1

thrillseeker回答回数328ベストアンサー獲得回数372007/10/13 18:12:50

ポイント35pt

以下で出来ました。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;
	}
}
id:hayama5

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

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

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

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

2007/10/15 09:07:35
id:thrillseeker No.2

thrillseeker回答回数328ベストアンサー獲得回数372007/10/13 22:54:41

ポイント35pt

追記:

using System.Collections.ObjectModel;

が必要です。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません