datagridview で特定の行の選択を無効にしたい。
winform に表示される datagridview の 1 つ以上の datagridview 行の select プロパティを削除できる必要があります。目標は、ユーザーが特定の行を選択できないようにすることです。(条件による)
ありがとう、
datagridview で特定の行の選択を無効にしたい。
winform に表示される datagridview の 1 つ以上の datagridview 行の select プロパティを削除できる必要があります。目標は、ユーザーが特定の行を選択できないようにすることです。(条件による)
ありがとう、
SelectionMode が FullRowSelect の場合、その DataGridView の SetSelectedRowCore をオーバーライドする必要があり、選択したくない行のベース SetSelectedRowCore を呼び出さないでください。
SelectionMode が FullRowSelect でない場合は、SetSelectedCellCore を追加でオーバーライドする必要があります (選択したくない行のベース SetSelectedCellCore を呼び出さないでください)。
次に例を示します。
public class MyDataGridView : DataGridView
{
protected override void SetSelectedRowCore(int rowIndex, bool selected)
{
if (selected && WantRowSelection(rowIndex))
{
base.SetSelectedRowCore(rowIndex, selected);
}
}
protected virtual void SetSelectedCellCore(int columnIndex, int rowIndex, bool selected)
{
if (selected && WantRowSelection(rowIndex))
{
base.SetSelectedRowCore(rowIndex, selected);
}
}
bool WantRowSelection(int rowIndex)
{
//return true if you want the row to be selectable, false otherwise
}
}
WinForms を使用している場合は、関連するフォームの designer.cs を開き、DataGridView インスタンスの宣言を変更して、DataGridView の代わりにこの新しいクラスを使用し、this.blahblahblah = new System.Windows.Forms も置き換えます。 DataGridView() を新しいクラスを指すようにします。
Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
dgvSomeDataGridView.ClearSelection()
End Sub