IDataGridViewEditingControl Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Define a funcionalidade comum para controles hospedados dentro de células de um DataGridView.
public interface class IDataGridViewEditingControl
public interface IDataGridViewEditingControl
type IDataGridViewEditingControl = interface
Public Interface IDataGridViewEditingControl
- Derivado
Exemplos
O exemplo de código a seguir fornece uma implementação dessa interface que deriva de DateTimePicker. Este exemplo faz parte de um exemplo maior disponível em How to: Host Controls in Windows Forms DataGridView Cells.
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
Comentários
Essa interface é implementada por controles, como DataGridViewComboBoxEditingControl e DataGridViewTextBoxEditingControl, que são hospedados por células correspondentes DataGridView , como DataGridViewComboBoxCell e DataGridViewTextBoxCell, quando estão no modo de edição.
Os tipos de célula que podem hospedar controles de edição definem sua EditType propriedade como um Type tipo de controle de edição. Quando a célula entra no modo de edição, as seguintes etapas são executadas:
O DataGridView controle cria uma instância do tipo de controle de edição.
O DataGridView controle chama o método de célula InitializeEditingControl . Você pode substituir esse método para transferir o valor da célula para o controle de edição.
O DataGridView controle chama o método de controle ApplyCellStyleToEditingControl de edição e passa no estilo atual da célula. Você pode implementar esse método para inicializar a aparência do controle de edição para que ele corresponda à aparência da célula.
O DataGridView controle chama o método de controle PrepareEditingControlForEdit de edição. Você pode implementar esse método para fazer ajustes finais no controle de edição, como selecionar o valor do controle.
Para obter mais informações sobre a implementação IDataGridViewEditingControl, consulte Como hospedar controles em células DataGridView do Windows Forms.
Tipos de célula como DataGridViewCheckBoxCell esse fornecem uma interface do usuário para especificar valores sem hospedar um controle de edição implementam a IDataGridViewEditingCell interface. A interface do usuário, nesse caso, é exibida independentemente de a célula estiver no modo de edição.
Outros tipos de célula, como DataGridViewButtonCell, fornecem uma interface do usuário, mas não armazenam valores especificados pelo usuário. Nesse caso, o tipo de célula não implementa IDataGridViewEditingCell nem hospeda um controle de edição.
Propriedades
| Nome | Description |
|---|---|
| EditingControlDataGridView |
Obtém ou define o DataGridView que contém a célula. |
| EditingControlFormattedValue |
Obtém ou define o valor formatado da célula que está sendo modificada pelo editor. |
| EditingControlRowIndex |
Obtém ou define o índice da linha pai da célula de hospedagem. |
| EditingControlValueChanged |
Obtém ou define um valor que indica se o valor do controle de edição difere do valor da célula de hospedagem. |
| EditingPanelCursor |
Obtém o cursor usado quando o ponteiro do mouse está sobre o EditingPanel controle de edição, mas não sobre o controle de edição. |
| RepositionEditingControlOnValueChange |
Obtém ou define um valor que indica se o conteúdo da célula precisa ser reposicionado sempre que o valor for alterado. |
Métodos
| Nome | Description |
|---|---|
| ApplyCellStyleToEditingControl(DataGridViewCellStyle) |
Altera a interface do usuário do controle para ser consistente com o estilo de célula especificado. |
| EditingControlWantsInputKey(Keys, Boolean) |
Determina se a chave especificada é uma chave de entrada regular que o controle de edição deve processar ou uma chave especial que deve DataGridView ser processada. |
| GetEditingControlFormattedValue(DataGridViewDataErrorContexts) |
Recupera o valor formatado da célula. |
| PrepareEditingControlForEdit(Boolean) |
Prepara a célula selecionada no momento para edição. |