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;
}
}
}
答案 0 :(得分:0)
打开对话框时尝试此操作:
newNum.ShowDialog()
if (newNum.DialogResult == DialogResult.OK)
{
}
我无法将 DialogResult.OK
与.showDialog()
进行比较。
您必须将表单的DialogResult
属性与值DialogResult.OK
进行比较,而不是.showDialog()
。
答案 1 :(得分:0)
我设法解决它,谢谢你的帮助。该错误来自
行datagridview1.Rows.Add(val[0], 0, val[1], new DataGridViewComboBoxCell(), 4, 0);
我将其更改为
datagridview1.Rows.Add(val[0], 0, val[1], null, 4, 0);
它有效。