C# 通过按Form1的 按钮,改变Form2的panel背景颜色。卡了快两天了,试了ref

但是在别处打开Form1窗体的时候要参数…百度了下说是委托,不懂,不会弄。求大神帮忙... 但是在别处打开Form1窗体的时候要参数…百度了下说是委托,不懂,不会弄。求大神帮忙 展开
 我来答
jimodeduzou
2016-04-24 · TA获得超过3203个赞
知道大有可为答主
回答量:2567
采纳率:66%
帮助的人:1299万
展开全部

可以通过Invoke进行跨线程调用(其他类似的方法也行):

//Form1中的按钮修改Form2中的panel颜色
//首先在Form2代码中添加公共函数
public partial class Form2 : Form
{
        public Form2()
        {
            InitializeComponent();
        }

        public void changecolor() //添加的函数
        {
            panel2.BackColor = Color.Red;
        }
    }
    
//Form1中添加如下:
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //委托, 为了使用Invoke调用Form2的方法
        //因为.Net 禁止直接的跨线程调用.
        public delegate void del_change();
        public del_change change;

        private void btn_1_Click(object sender, EventArgs e) //Form1中的按钮点击事件过程
        {
            Form2 f2;
            f2 = new Form2();
            f2.Show();
            f2.Activate();

            change = f2.changecolor; //将委托指向Form2的方法. 如果要传参啥的同理操作.
            f2.Invoke(change);
        }
}
追问
试了一下……还是没变化啊
追答

我这里都有变化 怎么可能你那边没有呢.


肯定是哪里复制粘贴位置错误了.


你先单独新建一个项目试试, 然后一步一步理解了再融入到你目前的项目中.

别想着跳跃做项目.

做C#的人有七八成都属于赶工型心理. 基础不扎实, 又想速度完成项目, 这样是不行的.

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式