protected virtual void InitializeReadOnlyModeBinding() { List <Control> controlList = ViewHelpers.GetAllControls(this); foreach (Control control in controlList) { IControlExtension controlExtension = control as IControlExtension; if (controlExtension != null) { if (controlExtension.Editable) { control.DataBindings.Add("ReadOnly", this, "ReadonlyMode"); } else { controlExtension.ReadOnly = true; } if (control is DataGridexView) { DataGridexView dataGridexView = control as DataGridexView; if (dataGridexView != null && dataGridexView.AllowAddRow) { control.DataBindings.Add("AllowUserToAddRows", this, "EditableMode"); } else { ((DataGridView)control).AllowUserToAddRows = false; } if (dataGridexView != null && dataGridexView.AllowDeleteRow) { control.DataBindings.Add("AllowUserToDeleteRows", this, "EditableMode"); } else { ((DataGridView)control).AllowUserToDeleteRows = false; } } } else if (control is CheckBox) { control.DataBindings.Add("Enabled", this, "EditableMode"); } } //this.fastListIndex.DataBindings.Add("Enabled", this, "ReadonlyMode"); //HERE: WE DON'T LOCK fastListIndex.Enabled TO ReadonlyMode, INSTEAD: WE HANDLE fastListIndex.MouseClick AND fastListIndex.KeyDown TO KEEP THE CURRENT ROW OF fastListIndex WHEN EditableMode }
protected virtual void InitializeDataGridReadonlyColumns(DataGridexView dataGridView) { DataGridColumnNames dataGridColumnNames = new DataGridColumnNames() { DataGridView = dataGridView }; foreach (DataGridViewColumn dataGridViewColumn in dataGridView.Columns) { if (dataGridViewColumn.ReadOnly) { dataGridColumnNames.ColumnNames.Add(dataGridViewColumn.Name); } } this.readOnlyDataGridColumnNames.Add(dataGridColumnNames); }
protected virtual void dataGrid_ReadOnlyChanged(object sender, EventArgs e) { foreach (DataGridColumnNames dataGridColumnNames in this.readOnlyDataGridColumnNames) { if (sender.Equals(dataGridColumnNames.DataGridView)) { DataGridexView dataGridexView = sender as DataGridexView; foreach (string columnName in dataGridColumnNames.ColumnNames) { if (dataGridexView.Columns[columnName] != null) { dataGridexView.Columns[columnName].ReadOnly = true; } } } } }