Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当从Mdi窗体打开子窗体时,子窗体中存在的datagridview的列索引将更改_C# - Fatal编程技术网

C# 当从Mdi窗体打开子窗体时,子窗体中存在的datagridview的列索引将更改

C# 当从Mdi窗体打开子窗体时,子窗体中存在的datagridview的列索引将更改,c#,C#,我有一个MDI父窗体,并通过以下代码从该窗体打开一个子窗体: private void editCategoryToolStripMenuItem_Click(object sender, EventArgs e) { formHide(); EditCatagoryGrid objEditCategoryGrid = new EditCatagoryGrid(); objEditCategoryGrid.MdiParent = this; obj

我有一个MDI父窗体,并通过以下代码从该窗体打开一个子窗体:

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();
    }
}
EditCatagoryGrid
中存在一个
datagridview
。当我在不使用mdiform的情况下打开
EditCatagoryGrid
表单时,它可以正常工作,但当使用mdiparent表单时,
EditCatagoryGrid
中存在的datagridview的列索引发生变化,它无法工作。我一直没能解决这个问题。有人能帮忙吗

@非常感谢您的回复,我绑定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;
    }

您的问题很难回答,因为您不了解有关代码的足够信息。因此,没有人能准确地猜出这个问题

我最好的建议是,调试你的代码。在
Load
Change
事件以及
CategoryEditForm
中的每个关键方法上放置一个断点,然后查看发生了什么


可能的问题:正在抛出一些异常,如
NullReferenceException
OutOfRangeException
,或
SqlException
,并且UI没有报告异常。

最后我解决了问题,必须在EditCatagoryGrid窗体的Show事件上调用称为EditCatagoryGrid窗体的onload事件的函数,并将其从EditCatagoryGrid窗体的onload事件中删除

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

请显示与EditCategoryGrid表单中存在的dataGridView相关的代码。这是瓶装水。给定的代码没有意义。我编辑了我的文章,详细介绍了如何绑定dataGridView dataGridView在调用
AddCategoryComboxToDataGridView()
?在调用AddCategoryComboxToDataGridView()之前dataGridView有多少列gridview有一列是CategoryIDSee我给出的答案。有谁能告诉我们,当它被称为EditCatagoryGrid表单的onload事件时,为什么它不能正常工作?我们怎么知道?我们绝对猜不到。我们必须查看您的代码。