如何从另一个窗体中更改窗体的属性,c# . net
本文关键字:窗体 属性 net 另一个 | 更新日期: 2023-09-27 18:14:57
我在Form3中有一个特定标签的按钮,我想从Form2更改其背景图像。我该怎么做呢,我试过了:
foreach ( Button but in Bridge.Form3)
{
if (but.Tag == tagcheck)
{
but.BackgroundImage = Properties.Resources.inactive;
}
}
我的项目名称是Bridge,我想要的图像在我的资源中名为inactive。我得到一个错误,在文本桥下。对此
我试过了:
foreach (Control ctrl in Form3.Controls )
{
if (ctrl.GetType() == typeof(Button) && ((Button)ctrl).Tag == tagcheck)
{
((Button)ctrl).BackgroundImage = Properties.Resources.inactive;
}
}
我得到错误消息:非静态字段、方法或属性需要对象引用表单2已经实例化了
试试这个:
//You have to fill this variable (e.g. in constructor) with a reference to the object of you form
public Form3 refF3;
public void test() {
foreach (Control ctrl in refF3.Controls) {
if (ctrl.GetType() == typeof(Button) && ((Button)ctrl).Tag == tagcheck) {
((Button)ctrl).BackgroundImage = Properties.Resources.inactive;
{
}
}
这里有两种方法可以获取位于不同形式的控件的对象引用:
1-如果你必须初始化目标表单:
2-如果目标表单已经打开
Control.ControlCollection f3_ctrls;
//Case 1
Form3 f3 = new Form3();
f3.Show();
f3_ctrls = f3.Controls;
//Case 2
f3_ctrls = (Application.OpenForms["Form3"]).Controls;
foreach (Control ctrl in f3_ctrls)
{
if ((ctrl is Button) && ctrl.Tag.Equals("myTag"))
{
ctrl.BackColor = Color.White;
}
}