C# OpenFileDialog不显示

C# OpenFileDialog不显示,c#,datagridview,combobox,openfiledialog,C#,Datagridview,Combobox,Openfiledialog,我有这个DataGridView,我想每次你点击浏览文件。。。要打开的openFileDialog 到目前为止,我们已经做到了这一点,但它不起作用 private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) { string bbb = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();

我有这个DataGridView,我想每次你点击浏览文件。。。要打开的openFileDialog

到目前为止,我们已经做到了这一点,但它不起作用

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
   string bbb = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
   if (bbb == "Browse From File...")
   {
       openFileDialog2.ShowDialog();
   }
我也尝试过这些,但什么也没有:

if (e.ColumnIndex.Equals = "Browse From File...")
if (dataGridView1.SelectedCells = "Browse From File...")   
if ((string)dataGridView1.SelectedCells[0].Value == "Browse From File...")
if (dataGridView1.Rows[1].Cells["Browse From File..."].Value.ToString() == "Browse From File...")
           {
               //openFileDialog2.ShowDialog();
           }

一种解决方案是捕获事件,其中来自datagrid的控件显示为EditingControlsShowing,并在组合框上添加SelectionChanged处理程序

大概是这样的:

    private void dataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        if (e.Control is ComboBox)
        {
            ComboBox cellComboBox = (ComboBox)e.Control;
            if (cellComboBox != null)
            {
                cellComboBox.SelectedIndexChanged += new EventHandler(cellComboBox_SelectedIndexChanged);
            }
        }
    }

    void cellComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        DataGridViewComboBoxEditingControl comboBox = sender as DataGridViewComboBoxEditingControl;
        if (comboBox != null)
        {
            if (String.Compare(comboBox.Text, "Browse From File...") == 0)
            {
                openFileDialog.ShowDialog();
            }
        }
    }
编辑


要将事件处理程序添加到网格,请转到表单的设计视图,然后右键单击网格。单击关联菜单中的属性。在“属性”窗口中,单击lightning图像上的“事件”按钮,然后搜索EditingControlShowing条目。双击空白区域以添加事件处理程序。在后面的页面代码中,您将看到一个类似于*dataGridView1\u EditingControlShowing*的空方法,在该方法中,从上述方法复制/粘贴代码。除此之外,还要在同一源文件中复制/粘贴第二个方法cellComboBox\u SelectedIndexChanged。

它应该是什么

if (bbb.equals("Browse From File..."))

若事件正在激发,您是否尝试过调试?在第一个示例中,当您调试它时,bbb等于什么?你试过获取DataGridViewCellsender.Value吗?调试并告诉我们bbbin的值这一行:如果bbb==从文件浏览…@piotr当我进入时,它不会进入CellValueChanged方法当我单击从文件浏览时…@davide我在这个方法中切换断点,程序永远不会停止转到断点。我想CellValueChanged方法从未被激发。不起作用。不使用这种方法中的任何一种。我切换了断点,他们并没有停止程序。我刚刚测试了这个,它对我来说很有效。是否将事件处理程序添加到数据网格:this.dataGridView.EditingControlShowing+=new System.Windows.Forms.dataGridView editingcontrolshowingEventHandlerthis.dataGridView\u EditingControlShowing;我应该把这个放在哪里?我在按钮方法中添加了它,它向我显示了错误。错误:事件“System.Windows.Forms.DataGridView.EditingControlShowing”只能出现在+=或-=的左侧,这正是事件处理程序?粘贴此项时出错:this.dataGridView.EditingControlShowing+=new System.Windows.Forms.dataGridView editingcontrolshowingEventHandlerthis.dataGrid‌​视图\编辑控制显示;