控件属性不允许更改

 michael 发布于 2023-02-12 18:12

我的mainForm包含两个按钮(btnLoad&btnChange)和一个面板

单击btnLoad时,它会将其他表单(有5个不同的,具有不同的控制器)加载到面板中.让我假设其中一个名为Form2,其中包含一个标签(labelMessage)

我的问题是,当我单击btnChange时,以下语句将不起作用.

f2.labelMessage.Text = "Button Change Clicked";

我的代码是

// codes on mainFrom

private void btnChange_Click(object sender, EventArgs e)
{

   Form2 f2 = new From2();
   f2.labelMessage.Text = "Button Change Clicked"; //labelMessage's modifier is public

}


private void btnLoad_Click(object sender, EventArgs e)
{
    panelDock.Controls.Clear();
    Form f2 = new Form2();
    f2.TopLevel = false;
    panelDock.Controls.Add(f2);
    f2.Show();

}

这是错的吗?

1 个回答
  • 由于已经显示了Form2,因此您应该使用Application.OpenForms而不是创建Form2的新实例

    private void btnChange_Click(object sender, EventArgs e)
    {
        Form2 f2 = (Form2)Application.OpenForms["Form2"];
        f2.labelMessage.Text = "Button Change Clicked"; //labelMessage's modifier is public
    }
    

    从您的注释中,您可以尝试使用Form2

    private void btnChange_Click(object sender, EventArgs e)
    {
        Form2 f2 = (Form2)panel1.Controls["Form2"];
        f2.labelMessage.Text = "Button Change Clicked"; //labelMessage's modifier is public
    }
    

    2023-02-12 18:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有