比如,我期望在DataGridView的某一列的Cell中,显示一系列较为复杂的元素,比如有Checkbox,有下拉框,同时兼有文本和图片,文本可能会有多行。
换句话说,我可能期望在Cell中放入一个Panel,这个panel中我可以自由组合摆放按钮,下拉框,图片等各种元素。
我该如何在C#代码里实现

解决方案 »

  1.   

    你可以通过CellPading这个事件来画一个Panel
      

  2.   

    印象中都是针对整个列来写的。即自定义一个列。针对单元格的没有写过,就算是一个自定义列写出来也是固定的元素。不能自由组合。
      你可以在程序中针对单个单元格添加控件啊。在我空间中可以看到在程序中为单元格添加任意控件。
    http://hi.baidu.com/wangcaidpj219x/blog/item/44d6a730bf923514ebc4af89.html
      

  3.   

    http://www.codeproject.com/KB/miscctrl/GenericDataGridView.aspx
      

  4.   

    给你思路:private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
      {
      //控制是那一列
      if (dataGridView1.CurrentCell.ColumnIndex == 0 && dataGridView1.CurrentCell.RowIndex != -1)
      {
          //在这里弹出含有复杂元素的窗体,其显示位置通过e.Control位置来确定,下面是弹出下拉框
         ComboBox com = new ComboBox();
         com.Location=e.Control.Location;
         com.Items..AddRange( new string[] { "Mr.", "Ms.", "Mrs.", "Dr." });
         com.SelectedValueChanged+=new EventHandler(com_SelectedValueChanged);   
      }
      } void dataGridView1_SelectedValueChanged(object sender, EventArgs e)
      {
      object val=(sender as ComboBox).SelectedValue; //这里便可以获得下拉框选择的值
      }弹出其他的窗体,也是类似的。。
      

  5.   

    http://msdn.microsoft.com/zh-cn/library/ms171618(v=VS.80).aspx
      

  6.   

    向在cell中随便来是不大可能的,除非那已经不是datagrid了,而是自己定义一个控件了...