你好朋友请帮助我,我是C#编程的新手。请帮助我,由于以下问题,我无法整合我的项目。 我创建了一个MainScreen表单,其中我使用了两个面板。第一个面板包含项目名称和menustrip。在第二个面板中,我根据用户在menustrip中的点击次数加载不同的面板。 menustrip包含不同的元素,如主页,更新配置文件,搜索,预订和注销。默认情况下,我在MainScreen第二个面板中加载Home窗体。它看起来像网页。成功登录后,我想清除第二个面板,并希望加载主页表单/搜索表单。但是当我尝试这样做时,它会显示"在这种情况下无法访问panel2"。请帮助我,我已经厌倦了为它寻找解决方案。如果这种方式无法实现,请提供一些替代方法。在此先感谢!
我使用下面的代码...我也使mdi父也是如此。
private void homeToolStripMenuItem_Click(object sender, EventArgs e)
{
Home ob1 = new Home();
ob1.TopLevel = false;
ob1.FormBorderStyle = FormBorderStyle.None;
pnlBody.Controls.Clear();
pnlBody.Controls.Add(ob1);
ob1.Show();
}
private void MainScreen_Load(object sender, EventArgs e)
{
MainMenuStrip.Items[5].Visible = false;
Home ob1 = new Home();
ob1.TopLevel = false;
ob1.FormBorderStyle = FormBorderStyle.None;
pnlBody.Controls.Clear();
pnlBody.Controls.Add(ob1);
ob1.Show();
}
答案 0 :(得分:0)
您可以通过将该控件修饰符指定给public来执行此操作。但是,这不是一个好方法。不要这样做。如果要从表单外部执行任何特定代码,则可以创建单独的方法,然后为该方法创建委托。您可以使用delegate.Invoke
调用该方法。 我已经在之前的answer。
答案 1 :(得分:0)
让我们假设您拥有来自主页的这些控件:
button1
textbox1
label1
现在,当您单击菜单选项时,您需要隐藏上面的部分或全部控件,然后显示以下内容:
button2
textbox2
picturebox1
label2
如果你想要这个,那么你可以在单击事件中进行此操作而不使用面板:
private void homeToolStripMenuItem_Click(object sender, EventArgs e)
{
button1.Visible = false;
textbox1.Visible = false;
label1.Visible = false;
button2.Visible = true;
textbox2.Visible = true;
picturebox1.Visible = true;
label2.Visible = true;
button1.Location = new Point(X, Y);
//Other controls locations...
}
新Point是一个类构造函数,允许您更改窗体中控件的位置(X和Y是像素坐标)
而且......我想这就是全部〜:3
哦,你可以使用public int来计算页码...所以,如果你有3个页面,当用户点击时,我不知道" Page 2"您公开的变量X的值为2,因此在您的事件中您可以比较页面组合:
private void homeToolStripMenuItem_Click(object sender, EventArgs e)
{
if(x==1)//You know you are un page 1, you hide all the page 1 controls
{
button1.Visible = false;
textbox1.Visible = false;
label1.Visible = false;
}
else if(x==2)
{
//Hide you page 2 control, etc.
}
//After hidding your controls, next you have to show this page controls and adjust them to the form which are this ones:
button2.Visible = true;
textbox2.Visible = true;
picturebox1.Visible = true;
label2.Visible = true;
button1.Location = new Point(X, Y);
//Other controls locations...
//Finally, set X the value of the page number so you can copy and paste te comparation os X above in your events of every page:
X = pagenumber;
}