当从Mdi表单打开子表单时,子表单中存在的datagridview的列索引会更改

时间:2013-09-27 12:00:57

标签: c#

我有一个MdiParent表格,我正用这段代码打开一个孩子:

private void editCategoryToolStripMenuItem_Click(object sender, EventArgs e)
{
    formHide();
    EditCatagoryGrid objEditCategoryGrid = new EditCatagoryGrid();        
    objEditCategoryGrid.MdiParent = this;
    objEditCategoryGrid.Location = new Point(100, 80);
    objEditCategoryGrid.Show();        
}

public void formHide()
{      
    Form[] form = this.MdiChildren;
    foreach (Form f in form)
    {
        f.Hide();
        //ChangeMdiColor();
    }
}

datagridview中存在EditCatagoryGrid。当我在不使用mdiform的情况下打开EditCatagoryGrid表单时,它可以正常工作,但是当使用mdiparent表单时,EditCatagoryGrid中存在的datagridview的列索引会发生变化,但它不起作用。我一直无法弄清楚这个问题。任何人都可以帮忙吗?

@Desolate感谢您提供回复,我的代码绑定datagridview如下:

    private void EditCatagoryGrid_Load(object sender, EventArgs e)

    {

        bindDataGridView();
        addCategoryComboBoxToDataGridView();

        //closeAllOtherForms();
    }
    public void bindDataGridView()
    {
        objCon = new SqlCeConnection(@"Data Source= E:\Showroom software\Showroom software\SalePurchase.sdf ;Persist Security Info=False;");
        objCon.Open();
        objDa = new SqlCeDataAdapter("select CategoryId   from Category", objCon);
        DataTable dt = new DataTable();
        objDa.Fill(dt);
        dataGridView1.DataSource = dt;
        objCon.Close();

    }

    public void addCategoryComboBoxToDataGridView()
    {
        dataGridView1.Columns.Add(Category);

        Category.Name = "cmbcatagory";
        Category.HeaderText = "Category";
        Category.Width = 150;
        dataGridView1.Columns[1].Width = 100;
        dataGridView1.AllowUserToAddRows = false;
    }

2 个答案:

答案 0 :(得分:1)

最后我解决了问题,必须在EditCatagoryGrid窗体的onshow事件中调用EditCatagoryGrid窗体的onload事件调用函数,并从EditCatagoryGrid窗体的onload事件中删除它们

private void EditCatagoryGrid_Shown(object sender, EventArgs e)
{
    bindDataGridView();
    addCategoryComboBoxToDataGridView();   
}

答案 1 :(得分:0)

如果您不了解有关代码的足够信息,则很难回答您的问题。因此,没有人能够具体猜测问题。

我最好的建议是调试你的代码。在LoadChange事件以及CategoryEditForm中的每个关键方法中设置断点,看看发生了什么。

可能的问题:正在抛出NullReferenceExceptionOutOfRangeExceptionSqlException等异常,并且UI不会报告异常。