我将UserControl用作FlowLayoutPanel中的按钮,因为它包含文本和其他信息。通过单击FlowLayoutPanel内的UserControl,可以在我的Main表单中显示该表单。
这是UserControl示例:
private void SelectuCControl_MouseClick(object sender, MouseEventArgs e)
{
Main OP = new Main();
OP.ucControl.Show();
OP.ucControl.BringToFront();
}
在Main
表单中,ucControl
(UserControl)的访问修饰符设置为Public。
但是,当我单击时,什么也没有发生,并且每次单击都会使CPU和内存变高。后台发生了一些事情,但我看不到。
我也尝试用不同的方式来做。
这是尝试失败的另一种方法的示例。
主要形式:
public void ShowUC()
{
ucControl.Show();
ucControl.BringToFront();
}
并在UserControl中:
private void SelectContacts_MouseClick(object sender, MouseEventArgs e)
{
Main OP = new Main();
OP.ShowUC();
}
但还是一样。
您知道如何通过单击位于FlowLayoutPanel中的另一个UserControl来显示隐藏在Main Form中的UserControl吗?
答案 0 :(得分:0)
如果您编写以下代码:
Main x = new Main();
Main y = new Main();
...然后x
和y
不相同的Main
-它们是Main
的两个单独实例。
如果您与x
进行互动或更改,则对y
毫无影响。
如果您确实希望y
是同一实例,则需要执行以下操作:
Main x = new Main();
Main y = x;
在您的代码中,您需要找到一种方法来执行以下操作:
public Main OP;
private void SelectuCControl_MouseClick(object sender, MouseEventArgs e)
{
OP.ucControl.Show();
OP.ucControl.BringToFront();
}
现在,您可以在设置OP
时将Main
设置为UserControl
的同一实例。
答案 1 :(得分:0)
我找到了解决方案。 我要做的就是在我用作按钮的UserControl中添加此命令。
Main OP = (Main)ParentForm;
OP.ShowUC();