我们有两种表单,A
和B
。 B
表单中包含Panel
。 (Panel
的名称C
)
我想使用Color
形式更改Panel
格式B
的{{1}}。
这是我尝试过的:
A
此代码不会给我任何错误或警告,但仍然无效。
答案 0 :(得分:0)
你必须使用OpenForms
来完成这项任务。
你有Form1,Form2有一个面板。首先制作panel
修饰符public
我们假设您使用Form2
中的此代码打开了Form1
:
Form2 frm = new Form2();
frm.Show();
然后从Form1使用此代码:
Form2 frm = (Form2)Application.OpenForms["Form2"];
frm.panel1.BackColor = Color.Red;
答案 1 :(得分:0)
我认为你需要调用线程。在班级B SetColor()
中创建方法。
public void SetColor()
{
MethodInvoker Invoker = new MethodInvoker(delegate
{
C.BackColor = Color.FromArgb(0, 0, 255);
});
this.Invoke(Invoker);
}
然后调用此方法SetColor()
,而不是直接访问其他表单的BackColor
属性。
B cr = new B();
cr.Show();
cr.SetColor();
答案 2 :(得分:0)
取决于您是否要多次更改该颜色。如果是,请在表单'B'上创建带有颜色参数的公共方法,如下所示:
public partial class B : Form
{
...
public void ChangePanelColor(Color clr)
{
panel.BackColor= clr;
}
...
}
完成此操作后,您可以从A中调用此方法,如下所示:
public partial class A : Form
{
private B secondForm;
...
// event handler for button with text 'Show Form2'
private void ShowNewForm(object sender, EventArgs e)
{
secondForm = new B();
secondForm.Show();
}
// event handler for button with text 'Change panel color'
private void ChangePanelColor(object sender, EventArgs e)
{
secondForm?.ChangePanelColor(Color.Black);
}
}