■■■

2016年4月2日土曜日

DataGridViewのコンボボックスを変更不可にする方法

DataGridViewのコンボボックスを変更不可にする方法
VB.NET
Private Sub dgv1_EditingControlShowing(ByVal sender As Object, _
ByVal e As DataGridViewEditingControlShowingEventArgs) _
Handles dgv1.EditingControlShowing
If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then
Dim dgv As DataGridView = CType(sender, DataGridView)
If dgv.CurrentCell.OwningColumn.Name = "ComboBox" Then
Dim cb As DataGridViewComboBoxEditingControl = _
CType(e.Control, DataGridViewComboBoxEditingControl)
cb.DropDownStyle = ComboBoxStyle.DropDown
End If
End If
End Sub


Private Sub dgv1_CellValidating(ByVal sender As Object, _
ByVal e As DataGridViewCellValidatingEventArgs) _
Handles dgv1.CellValidating
Dim dgv As DataGridView = CType(sender, DataGridView)
If dgv.Columns(e.ColumnIndex).Name = "ComboBox" AndAlso _
TypeOf dgv.Columns(e.ColumnIndex) Is DataGridViewComboBoxColumn Then
Dim
cbc As DataGridViewComboBoxColumn = _
CType(dgv.Columns(e.ColumnIndex), DataGridViewComboBoxColumn)
If Not cbc.Items.Contains(e.FormattedValue) Then
cbc.Items.Add(e.FormattedValue)
End If
dgv(e.ColumnIndex, e.RowIndex).Value = e.FormattedValue
End If
End Sub
C#
private void dgv1_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is DataGridViewComboBoxEditingControl)
{
DataGridView dgv = (DataGridView)sender;
if (dgv.CurrentCell.OwningColumn.Name == "ComboBox")
{
DataGridViewComboBoxEditingControl cb =
(DataGridViewComboBoxEditingControl)e.Control;
cb.DropDownStyle = ComboBoxStyle.DropDown;
}
}
}

private void dgv1_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
if (dgv.Columns[e.ColumnIndex].Name == "ComboBox" &&
dgv.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn)
{
DataGridViewComboBoxColumn cbc =
(DataGridViewComboBoxColumn)dgv.Columns[e.ColumnIndex];
if (!cbc.Items.Contains(e.FormattedValue))
{
cbc.Items.Add(e.FormattedValue);
}
dgv[e.ColumnIndex, e.RowIndex].Value = e.FormattedValue;
}
}
■■■