セルのReadOnlyを個別に制御する方法

  DataGrid 上のカレントセルの ReadOnly を個別に制御するには、「セルの編集開始時にイベントを発生させる方法」 を利用して、セル編集開始時にイベントを発生させます。このイベントメソッド内で、行番号・セル値等を判断して編集可否を制御します。
【使用例】 DataTable内の列「対象外」の値により、セルの編集可否をコントロールする。

セルの編集開始時にイベントを発生させる方法」を用いて、セル編集開始時にイベントを発生させます。
イベントメソッド内では、カレント行の値を判断し、編集操作の中断を設定します。
/// <summary>
///  DataGridセル変更開始イベント共通メソッド
/// </summary>
/// <remark>
/// ・「対象外」列がtrueの場合、行全体で編集不可とする
/// </remark>
private void DataGrid_ValueChanging( object sender, OsDataGridExtensions.DataGridValueChangingEventArgs e )
{
    // RowObjectがDataRowViewでない場合、Exit
    if ( e.Row.GetType() != typeof(DataRowView))
        return;
    
    DataRow dr = ((DataRowView)e.Row).Row;
    
    // 対象外の場合、編集不可にする
    if ( !e.ColumnName.Equals("対象外") && dr.Table.Columns.IndexOf("対象外") >= 0
        && !dr.IsNull("対象外") && (bool)dr["対象外"])
    {
        e.Cancel = true;
        return;
    }
}
【注意】
戻る