【发布时间】:2014-04-16 12:51:51
【问题描述】:
我有一个奇怪的问题。我有datagridview 填充来自XML 文件和一个button 在该datagridview 末尾添加一个新行。
我有滚动条,所以我不能一次看到所有行。当我添加新行时,如果我 没有 看到新创建的行,一切正常。
行已创建,我可以编辑单元格,一切都很好。但是,如果我向下滚动到最后,然后按button,就会有DataError
datagridview1.Rows[datagridview1.Rows.Count - 1].Cells[3].
这个专栏很特别。它是DataGridViewComboBoxColumn,当它没有价值时
我有 - DisplayStyle = Nothing。但是当我有来自 xml 的值时,我会创建 style - ComboBox。 我没意见。
这是添加行的代码:
private void AddNewBlock_Click(object sender, EventArgs e)
{
datagridview1.Rows.Add(val[0], 0, val[1], new DataGridViewComboBoxCell(), 4, 0);
datagridview1.Rows[datagridview1.Rows.Count - 1].Cells[3].ReadOnly = false;
(datagridview1.Rows[datagridview1.Rows.Count - 1].Cells[3] as DataGridViewComboBoxCell).DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
AddNewDataGridvRow(datagridview1.Rows.Count - 1, 3, true);
}
方法`AddNewDataGridvRow'包含:
private void AddNewDataGridvRow(int row, int col, bool isNewBBlock = false)
{
AddNewNumber newNum = new AddNewNumber(); // this shows form with one textbox
// in it you type the value. Nothing special.
DataGridViewComboBoxCell cb = new DataGridViewComboBoxCell();
if (newNum.ShowDialog() == DialogResult.OK)
{
cb = new DataGridViewComboBoxCell();
cb = (DataGridViewComboBoxCell)datagridview1.Rows[row].Cells[col];
byte num= newNum.Num;
cb.ValueMember = num.ToString();
cb.Items.Add(num.ToString());
datagridview1.Rows[row].Cells[col].Value = ver.ToString();
}
我做错了什么吗?
当我调试它时,我在这一行按 f10 后得到错误
if (newNum.ShowDialog() == DialogResult.OK)
表格代码:
public partial class AddNewNumber : Form
{
public byte Num= 0;
public AddNewNumber ()
{
InitializeComponent();
}
private void btnOk_Click(object sender, EventArgs e)
{
try
{
Num= Convert.ToByte(tbNum.Text);
this.Close();
}
catch
{
this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
}
}
}
【问题讨论】:
-
您的表单代码
AddNewNumber在哪里?表格好像不太好用。还有,你有什么错误信息吗?
标签: c# winforms exception datagridview