Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c中允许用户手动输入datagridview组合框_C#_Datagridview - Fatal编程技术网

C# 如何在c中允许用户手动输入datagridview组合框

C# 如何在c中允许用户手动输入datagridview组合框,c#,datagridview,C#,Datagridview,我试图在datagridview组合框中输入值。但它不允许。怎么办?确保DataGridView的EditMode属性设置为EditOnKeystrokeOrF2 此外,请验证ReadOnly属性是否设置为False。private void GridStockItemEntry\u EditingControlShowingobject sender,DataGridViewEditingControlShowingEventArgs e { DataGridViewRow行=GridStoc

我试图在datagridview组合框中输入值。但它不允许。怎么办?

确保DataGridView的EditMode属性设置为EditOnKeystrokeOrF2

此外,请验证ReadOnly属性是否设置为False。

private void GridStockItemEntry\u EditingControlShowingobject sender,DataGridViewEditingControlShowingEventArgs e { DataGridViewRow行=GridStockItemEntry.CurrentRow; DataGridViewCell单元格=GridStockItemEntry.CurrentCell; 如果e.Control.GetType==TypeOfDataGridViewComboxeditingControl { 如果单元格==行.Cells[ItemName]&&Convert.ToStringrow.Cells[Type]。值==原材料 { DataGridViewComboBoxEditingControl cbo=e。控件作为DataGridViewComboxeditingControl; cbo.DropDownStyle=ComboBoxStyle.DropDown; cbo.Validating+=新的CancelEventHandlercbo\U验证; } } } 无效cbo_验证对象发送方,取消事件参数e { DataGridViewComboBoxEditingControl cbo=作为DataGridViewComboxeditingControl的发送方; DataGridView grid=cbo.EditingControlDataGridView; 对象值=cbo.Text; //如果列表中没有值,则将其添加到列表中 如果cbo.Items.IndexOfvalue==-1 { DataGridViewComboxCell cboCol=DataGridViewComboxCellGrid.CurrentCell; //必须同时添加到当前组合框和模板中,以避免重复条目。。。 cbo.Items.Addvalue; cboCol.Items.Addvalue; grid.CurrentCell.Value=值; } }
也许,这个示例更易于阅读:

private void datagridview_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) {
        DataGridView dgv = (DataGridView)sender;
        if(dgv.CurrentCell.ColumnIndex==dgv.Columns["ColumnName"].Index) {
            ComboBox cbx = (ComboBox)e.Control;
            cbx.DropDownStyle = ComboBoxStyle.DropDown;
            cbx.AutoCompleteSource = AutoCompleteSource.ListItems;
            cbx.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
        }
    }

它不允许combobox什么不允许combobox?我刚刚尝试了一个具有这些属性的gridview和一个列中的组合框。这个选项在datagridview中不起作用。根据您的回答,它将只允许从组合框中选择值,它将不允许输入文本CBO_,即使我将e.cancel设置为true,也会连续调用验证。有什么具体原因吗?