这是代码
   DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[2]; //这里决定哪一列是ComboBox
ComboBox cmbFunctionArea = new ComboBox();
//这里如果你是绑定数据到ComboBox就写数据绑定得代码
cmbFunctionArea.Items.AddRange(new object[]{"选项一","选项二","选项三"});
cmbFunctionArea.Cursor = Cursors.Arrow;
//如果允许修改ComboBox中得内容的话,就改为ComboBoxStyle.DropDown
cmbFunctionArea.DropDownStyle= ComboBoxStyle.DropDownList;
cmbFunctionArea.Dock = DockStyle.Fill;cmbFunctionArea.SelectionChangeCommitted += new EventHandler(cmbFunctionArea_SelectionChangeCommitted1); dgtb.TextBox.Controls.Add(cmbFunctionArea); private void cmbFunctionArea_SelectionChangeCommitted1(object sender, EventArgs e)
{
this.dataGrid1[this.dataGrid1.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();
}我就是想将comboBox放入到dataGrid里面某个列中,
但是系统老是提示这一行
 DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[2]; //这里决定哪一列是ComboBox错误提示:索引超出范围,必须为非负值并小于集合大小
请各位帮我看看

解决方案 »

  1.   

    DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[2]; //这里决定哪一列是ComboBox
    看看TableStyles.Count是多少,
    看看GridColumnStyles.Count是多少。
      

  2.   

    GridColumnStyles是不是只有一个呀~!
      

  3.   

    我找到TableStyles.count是=0的
    所以请各位帮我解决一下,怎样才能将comboBox放到dataGrid的某个列中,谢谢
    如果用以上的方法,请教各位怎么从头开始帮定dataGrid,填充TableStyles,然后添加comboBox 谢谢
      

  4.   

    我只能举个简单的例子,比如StringBuilder sb = new StringBuilder( 4 );
    sb[0] = 'B';
    sb[1] = 'l';这样会编译通过,但运行时也会出现同样的错误,我想可能是由于StringBuilder对下标运算符不允许这样的用法,而改成:
    sb.Insert( 0, 'B' );
    sb.Insert( 1, 'l' );
    就可以。要么就是所谓的“数组越界”吧。
      

  5.   

    sb的索引大小表示的是sb中的字符的个数
    你初始化一个sb后,由于没有字符,所以sb的长度为0,但是sb[0]表示长度至少是1,这是矛盾的看下面的例子        StringBuilder sb = new StringBuilder(4);
            sb.Append("ABCDEFG");
            Response.Write(sb.Length.ToString());
            sb[0] = 'R';
            Response.Write("<br>"+sb.ToString());