DataGridView編集用テキストのオートコンプリートを有効にする方法AutoCompleteSource を設定することでオートコンプリートが実装されます。
VB.NETDim autoCompleteSource As New AutoCompleteStringCollection()
Private Sub dgv1_EditingControlShowing( _
ByVal sender As Object, _
ByVal e As DataGridViewEditingControlShowingEventArgs) _
Handles dgv1.EditingControlShowing
Dim dgv As DataGridView = CType(sender, DataGridView)
If TypeOf e.Control Is TextBox Then
Dim tb As TextBox = CType(e.Control, TextBox)
If dgv.CurrentCell.OwningColumn.Name = "Column1" Then
tb.AutoCompleteMode = AutoCompleteMode.SuggestAppend
tb.AutoCompleteSource = _
Windows.Forms.AutoCompleteSource.CustomSource
tb.AutoCompleteCustomSource = Me.autoCompleteSource
Else
tb.AutoCompleteMode = AutoCompleteMode.None
End If
End If
End Sub
Private Sub dgv1_DataSourceChanged( _
ByVal sender As Object, ByVal e As EventArgs) _
Handles dgv1.DataSourceChanged
Dim dgv As DataGridView = CType(sender, DataGridView)
Me.autoCompleteSource.Clear()
Dim r As DataGridViewRow
For Each r In dgv.Rows
Dim val As String = r.Cells("Column1").Value
If Not String.IsNullOrEmpty(val) AndAlso _
Not Me.autoCompleteSource.Contains(val) Then
autoCompleteSource.Add(val)
End If
Next r
End Sub
Private Sub dgv1_CellValueChanged(ByVal sender As Object, _
ByVal e As DataGridViewCellEventArgs) _
Handles dgv1.CellValueChanged
Dim dgv As DataGridView = CType(sender, DataGridView)
If dgv.Columns(e.ColumnIndex).Name = "Column1" Then
Dim val As String = dgv(e.ColumnIndex, e.RowIndex).Value
If Not String.IsNullOrEmpty(val) AndAlso _
Not Me.autoCompleteSource.Contains(val) Then
autoCompleteSource.Add(val)
End If
End If
End Sub
C#AutoCompleteStringCollection autoCompleteSource =
new AutoCompleteStringCollection();
private void dgv1_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
if (e.Control is TextBox)
{
TextBox tb = (TextBox)e.Control;
if (dgv.CurrentCell.OwningColumn.Name == "Column1")
{
tb.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
tb.AutoCompleteSource = AutoCompleteSource.CustomSource;
tb.AutoCompleteCustomSource = this.autoCompleteSource;
}
else
{
tb.AutoCompleteMode = AutoCompleteMode.None;
}
}
}
private void dgv1_DataSourceChanged(object sender, EventArgs e)
{
DataGridView dgv = (DataGridView)sender;
this.autoCompleteSource.Clear();
foreach (DataGridViewRow r in dgv.Rows)
{
string val = r.Cells["Column1"].Value as string;
if (!string.IsNullOrEmpty(val) &&
!this.autoCompleteSource.Contains(val))
{
autoCompleteSource.Add(val);
}
}
}
private void dgv1_CellValueChanged(object sender,
DataGridViewCellEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
if (dgv.Columns[e.ColumnIndex].Name == "Column1")
{
string val = dgv[e.ColumnIndex, e.RowIndex].Value as string;
if (!string.IsNullOrEmpty(val) &&
!this.autoCompleteSource.Contains(val))
{
autoCompleteSource.Add(val);
}
}
}