DataGridView:FullRowSelectおよびフォーカス
-
03-07-2019 - |
質問
モーダルウィンドウにDataGridViewがあり、プログラムのオプションのリストがあります。グリッドには2つの列があります。最初のオプションには、そのオプションを選択するためのチェックボックスが含まれています。seccondはそのオプションの名前/説明です。 winformには[OK]ボタンと[キャンセル]ボタンも含まれていますが、それは重要です。以下のコードは、私がやりたいことをします。 FullRowSelectプロパティのため、その行内の任意の場所をクリックすると、チェックボックスがオン/オフになります。ただし、現在の行の周囲に青い背景や点線が表示されなくなりました。現在の機能を失うことなくこれをどのように追加できますか?
編集: 詳しく説明します。私がしたいのは、選択した行/セルの点線や青い背景をもう一度有効にすることです。私が現在持っているコードが何らかの形でこれを無効にしているようです...
関連する現在のコード:
public OptionsForm()
{
InitializeComponent();
OptionsRoot = Options.GetReadOnlyRoot(OptionsBannersNameValueList.GetNameValueList(Settings.Default.OptionsBanners));
optionsBannersDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
optionsBannersDataGridView.MultiSelect = false;
optionsBannersDataGridView.RowPrePaint += new DataGridViewRowPrePaintEventHandler(optionsBannersDataGridView_RowPrePaint);
InitUI();
Closing += MyFormClosing;
BindingSourceTree = BindingSourceHelper.InitializeBindingSourceTree(components, rootBindingSource);
}
private void optionsBannersDataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
e.PaintParts &= ~DataGridViewPaintParts.Focus;
}
解決 2
最終的に私がやったことは、上記のコードのほとんどを削除することでした。何らかの理由で、Visual Studioでプロパティを設定したときに機能しませんでしたが、現在は機能しています。そこで何が起こったのかわかりませんが、それは重要なことです。
コンストラクタは次のようになります。
public OptionsForm()
{
InitializeComponent();
AlternativerRoot = Alternativer.GetReadOnlyRoot(AlternativerFanerNameValueList.GetNameValueList(Settings.Default.AlternativerFaner));
InitUI();
Closing += MyFormClosing;
_bindingSourceTree = BindingSourceHelper.InitializeBindingSourceTree(components, rootBindingSource);
}
プロパティは、代わりにVisual Studio GUIで設定されます。 SelectionModeはFullRowSelectに設定され、MultiSelectはfalseに設定されます。
必要なフォーカスがまだ得られなかったため、Visual Studioで選択した行の背景色を青に、前景色を白に設定しました。これは私が望んでいたように動作するようになりました。
プロパティが以前に適切に設定されなかった理由はまだわかりませんが、少なくとも現在は動作しています:P
他のヒント
.OnCellClick
メソッドを使用して、行の色を青に設定します。点線のボーダーも追加できるはずだと思います。
次のように呼び出すことができると思います:
optionsBannersDataGridView.OnCellClick += new DataGridViewCellEventArgs(optionsBannersDataGridView_OnCellClick);