IDataGridViewEditingControl Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет общие функции для элементов управления, размещенных в ячейках объекта DataGridView.
public interface class IDataGridViewEditingControl
public interface IDataGridViewEditingControl
type IDataGridViewEditingControl = interface
Public Interface IDataGridViewEditingControl
- Производный
Примеры
В следующем примере кода представлена реализация этого интерфейса, наследуемого от DateTimePicker. Этот пример является частью более крупного примера, доступного в разделе "Практическое руководство. Элементы управления узлами в ячейках DataGridView в Windows Forms".
class CalendarEditingControl : DateTimePicker, IDataGridViewEditingControl
{
DataGridView dataGridView;
private bool valueChanged = false;
int rowIndex;
public CalendarEditingControl()
{
this.Format = DateTimePickerFormat.Short;
}
// Implements the IDataGridViewEditingControl.EditingControlFormattedValue
// property.
public object EditingControlFormattedValue
{
get
{
return this.Value.ToShortDateString();
}
set
{
if (value is String)
{
try
{
// This will throw an exception of the string is
// null, empty, or not in the format of a date.
this.Value = DateTime.Parse((String)value);
}
catch
{
// In the case of an exception, just use the
// default value so we're not left with a null
// value.
this.Value = DateTime.Now;
}
}
}
}
// Implements the
// IDataGridViewEditingControl.GetEditingControlFormattedValue method.
public object GetEditingControlFormattedValue(
DataGridViewDataErrorContexts context)
{
return EditingControlFormattedValue;
}
// Implements the
// IDataGridViewEditingControl.ApplyCellStyleToEditingControl method.
public void ApplyCellStyleToEditingControl(
DataGridViewCellStyle dataGridViewCellStyle)
{
this.Font = dataGridViewCellStyle.Font;
this.CalendarForeColor = dataGridViewCellStyle.ForeColor;
this.CalendarMonthBackground = dataGridViewCellStyle.BackColor;
}
// Implements the IDataGridViewEditingControl.EditingControlRowIndex
// property.
public int EditingControlRowIndex
{
get
{
return rowIndex;
}
set
{
rowIndex = value;
}
}
// Implements the IDataGridViewEditingControl.EditingControlWantsInputKey
// method.
public bool EditingControlWantsInputKey(
Keys key, bool dataGridViewWantsInputKey)
{
// Let the DateTimePicker handle the keys listed.
switch (key & Keys.KeyCode)
{
case Keys.Left:
case Keys.Up:
case Keys.Down:
case Keys.Right:
case Keys.Home:
case Keys.End:
case Keys.PageDown:
case Keys.PageUp:
return true;
default:
return !dataGridViewWantsInputKey;
}
}
// Implements the IDataGridViewEditingControl.PrepareEditingControlForEdit
// method.
public void PrepareEditingControlForEdit(bool selectAll)
{
// No preparation needs to be done.
}
// Implements the IDataGridViewEditingControl
// .RepositionEditingControlOnValueChange property.
public bool RepositionEditingControlOnValueChange
{
get
{
return false;
}
}
// Implements the IDataGridViewEditingControl
// .EditingControlDataGridView property.
public DataGridView EditingControlDataGridView
{
get
{
return dataGridView;
}
set
{
dataGridView = value;
}
}
// Implements the IDataGridViewEditingControl
// .EditingControlValueChanged property.
public bool EditingControlValueChanged
{
get
{
return valueChanged;
}
set
{
valueChanged = value;
}
}
// Implements the IDataGridViewEditingControl
// .EditingPanelCursor property.
public Cursor EditingPanelCursor
{
get
{
return base.Cursor;
}
}
protected override void OnValueChanged(EventArgs eventargs)
{
// Notify the DataGridView that the contents of the cell
// have changed.
valueChanged = true;
this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
base.OnValueChanged(eventargs);
}
}
Class CalendarEditingControl
Inherits DateTimePicker
Implements IDataGridViewEditingControl
Private dataGridViewControl As DataGridView
Private valueIsChanged As Boolean = False
Private rowIndexNum As Integer
Public Sub New()
Me.Format = DateTimePickerFormat.Short
End Sub
Public Property EditingControlFormattedValue() As Object _
Implements IDataGridViewEditingControl.EditingControlFormattedValue
Get
Return Me.Value.ToShortDateString()
End Get
Set(ByVal value As Object)
Try
' This will throw an exception of the string is
' null, empty, or not in the format of a date.
Me.Value = DateTime.Parse(CStr(value))
Catch
' In the case of an exception, just use the default
' value so we're not left with a null value.
Me.Value = DateTime.Now
End Try
End Set
End Property
Public Function GetEditingControlFormattedValue(ByVal context _
As DataGridViewDataErrorContexts) As Object _
Implements IDataGridViewEditingControl.GetEditingControlFormattedValue
Return Me.Value.ToShortDateString()
End Function
Public Sub ApplyCellStyleToEditingControl(ByVal dataGridViewCellStyle As _
DataGridViewCellStyle) _
Implements IDataGridViewEditingControl.ApplyCellStyleToEditingControl
Me.Font = dataGridViewCellStyle.Font
Me.CalendarForeColor = dataGridViewCellStyle.ForeColor
Me.CalendarMonthBackground = dataGridViewCellStyle.BackColor
End Sub
Public Property EditingControlRowIndex() As Integer _
Implements IDataGridViewEditingControl.EditingControlRowIndex
Get
Return rowIndexNum
End Get
Set(ByVal value As Integer)
rowIndexNum = value
End Set
End Property
Public Function EditingControlWantsInputKey(ByVal key As Keys, _
ByVal dataGridViewWantsInputKey As Boolean) As Boolean _
Implements IDataGridViewEditingControl.EditingControlWantsInputKey
' Let the DateTimePicker handle the keys listed.
Select Case key And Keys.KeyCode
Case Keys.Left, Keys.Up, Keys.Down, Keys.Right, _
Keys.Home, Keys.End, Keys.PageDown, Keys.PageUp
Return True
Case Else
Return Not dataGridViewWantsInputKey
End Select
End Function
Public Sub PrepareEditingControlForEdit(ByVal selectAll As Boolean) _
Implements IDataGridViewEditingControl.PrepareEditingControlForEdit
' No preparation needs to be done.
End Sub
Public ReadOnly Property RepositionEditingControlOnValueChange() _
As Boolean Implements _
IDataGridViewEditingControl.RepositionEditingControlOnValueChange
Get
Return False
End Get
End Property
Public Property EditingControlDataGridView() As DataGridView _
Implements IDataGridViewEditingControl.EditingControlDataGridView
Get
Return dataGridViewControl
End Get
Set(ByVal value As DataGridView)
dataGridViewControl = value
End Set
End Property
Public Property EditingControlValueChanged() As Boolean _
Implements IDataGridViewEditingControl.EditingControlValueChanged
Get
Return valueIsChanged
End Get
Set(ByVal value As Boolean)
valueIsChanged = value
End Set
End Property
Public ReadOnly Property EditingControlCursor() As Cursor _
Implements IDataGridViewEditingControl.EditingPanelCursor
Get
Return MyBase.Cursor
End Get
End Property
Protected Overrides Sub OnValueChanged(ByVal eventargs As EventArgs)
' Notify the DataGridView that the contents of the cell have changed.
valueIsChanged = True
Me.EditingControlDataGridView.NotifyCurrentCellDirty(True)
MyBase.OnValueChanged(eventargs)
End Sub
End Class
Комментарии
Этот интерфейс реализуется элементами управления, такими как DataGridViewComboBoxEditingControl и DataGridViewTextBoxEditingControl, которые размещаются соответствующими DataGridView ячейками, например DataGridViewComboBoxCell и DataGridViewTextBoxCell, когда они находятся в режиме редактирования.
Типы ячеек, которые могут размещать элементы управления редактированием, присваивают свойству EditTypeType представление типа элемента управления редактирования. Когда ячейка входит в режим редактирования, выполняются следующие действия.
Элемент DataGridView управления создает экземпляр типа элемента управления редактирования.
Элемент DataGridView управления вызывает метод ячейки InitializeEditingControl . Этот метод можно переопределить, чтобы передать значение ячейки в элемент управления редактирования.
Элемент DataGridView управления вызывает метод управления ApplyCellStyleToEditingControl редактированием и передает текущий стиль ячейки. Этот метод можно реализовать для инициализации внешнего вида элемента управления редактирования, чтобы он соответствовал внешнему виду ячейки.
Элемент DataGridView управления вызывает метод редактирования элемента управления PrepareEditingControlForEdit . Этот метод можно реализовать, чтобы внести окончательные корректировки в элемент управления редактированием, например выбрать значение элемента управления.
Дополнительные сведения о реализации IDataGridViewEditingControlсм. в статье "Практическое руководство. Элементы управления узлами в ячейках DataGridView в Windows Forms".
Типы ячеек, такие как DataGridViewCheckBoxCell предоставление пользовательского интерфейса для указания значений без размещения элемента управления редактирования, реализуют IDataGridViewEditingCell интерфейс. Пользовательский интерфейс в этом случае отображается независимо от того, находится ли ячейка в режиме редактирования.
Другие типы ячеек, например DataGridViewButtonCell, предоставляют пользовательский интерфейс, но не хранят указанные пользователем значения. В этом случае тип ячейки не реализует IDataGridViewEditingCell или размещает элемент управления редактирования.
Свойства
| Имя | Описание |
|---|---|
| EditingControlDataGridView |
Возвращает или задает объект DataGridView , содержащий ячейку. |
| EditingControlFormattedValue |
Возвращает или задает форматируемое значение ячейки, изменяемой редактором. |
| EditingControlRowIndex |
Возвращает или задает индекс родительской строки ячейки размещения. |
| EditingControlValueChanged |
Возвращает или задает значение, указывающее, отличается ли значение элемента управления редактирования от значения ячейки размещения. |
| EditingPanelCursor |
Возвращает курсор, используемый при переведении EditingPanel указателя мыши на элемент управления редактированием, но не над элементом управления редактированием. |
| RepositionEditingControlOnValueChange |
Возвращает или задает значение, указывающее, нужно ли изменять положение содержимого ячейки при изменении значения. |
Методы
| Имя | Описание |
|---|---|
| ApplyCellStyleToEditingControl(DataGridViewCellStyle) |
Изменяет пользовательский интерфейс элемента управления, чтобы он соответствовал указанному стилю ячеек. |
| EditingControlWantsInputKey(Keys, Boolean) |
Определяет, является ли указанный ключ регулярным входным ключом, который должен обрабатывать элемент управления редактированием или специальный ключ, который DataGridView должен обрабатываться. |
| GetEditingControlFormattedValue(DataGridViewDataErrorContexts) |
Извлекает форматируемое значение ячейки. |
| PrepareEditingControlForEdit(Boolean) |
Подготавливает выбранную в данный момент ячейку для редактирования. |