First Click on Combox in DataGridView without Reaction

Here is the demo code.

public Form1()
{
    InitializeComponent();
    view.viewName = "A";
    view.cameraName = "B";
    view.imageSize = "10";
    view.frameRate = 12;
    view.exposureTime = 34;
}

struct View
{
    public string viewName;
    public string cameraName;
    public string imageSize;
    public double frameRate;
    public double exposureTime;
}

View view;

static string MakeExposureTime(double time)
{
    return time.ToString();
}

private void Form1_Load(object sender, EventArgs e)
{
    int row = dataGridView_ActiveJob.Rows.Add(view.viewName, view.cameraName, view.imageSize, view.frameRate.ToString(), Form1.MakeExposureTime(view.exposureTime), "0%");
    DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)(dataGridView_ActiveJob.Rows[row].Cells["Rotate"]);
    cell.DataSource = new string[] { "0", "90", "180", "270" };
    dataGridView_ActiveJob.AllowUserToAddRows = false;
}
View Code

Solution:

The effect of the first click is to make the cell get the focus, you can avoid it by the following steps.

First, set the property "EditMode" of the DataGridView control to "EditOnEnter".

 

Second, add the "CellClick" event to the DataGridView. The specific code is as follows.

private void dataGridView_ActiveJob_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex >= 0 && e.RowIndex >= 0 && dataGridView_ActiveJob[e.ColumnIndex, e.RowIndex] != null && !dataGridView_ActiveJob[e.ColumnIndex, e.RowIndex].ReadOnly)
    {
        DataGridViewComboBoxColumn comboBoxColumn = dataGridView_ActiveJob.Columns[e.ColumnIndex] as DataGridViewComboBoxColumn;
        if (comboBoxColumn != null)
        {
            dataGridView_ActiveJob.BeginEdit(true);
            DataGridViewComboBoxEditingControl comboBoxEditingControl = dataGridView_ActiveJob.EditingControl as DataGridViewComboBoxEditingControl;
            if (comboBoxEditingControl != null)
            {
                comboBoxEditingControl.DroppedDown = true;
            }
        }
    }
}
View Code
原文地址:https://www.cnblogs.com/jizhiqiliao/p/9915011.html