Code Bye

关于从类给窗体控件赋值的问题

类的代码如下
 class Class1
    {
        public void showMsg()
        {
            Form1 ff = new Form1();
            ff.textBox1.Text = "ddd";
        }
        
    }

窗体代码如下

 private void button1_Click(object sender, EventArgs e)
        {
            Class1 cc = new Class1();
            cc.showMsg();
        }

本人想在class1类里面给窗体的textbox1赋值,上面的方法行不通,不知道问题出在哪里?
(textbox1的modifier属性已经设为了public)

解决方案

15

showMsg 并不应该是 Class1 的职责。以后你会越来明白这个原因。
Class1对象实例只是进行数据处理,它既然被 UI 组件所使用,就应该组为独立服务,不依赖于 UI 组件。例如它可以有一些属性
public class Class1
{
    public string Message{get; set;} 
}

可以被 UI 组件访问,而显示的职责可以由组件完成,例如

 private void button1_Click(object sender, EventArgs e)
        {
            Class1 cc = new Class1();
            this.textBox1.text = cc.Message;
        }

假设 窗体不读取 Mesage 属性,那就谁也不去显示。反正不是 cc 的职责。原因是既然你仍在随后编写的 Class1 中可以乱设计职责,那么就一定可以在窗体中设计。
过度设计,滥用 class,不是好事。

5

有个办法,不过不推荐就是了
((Form1)Application.OpenForms["Form1的Names属性"]).textBox1.Text = "ddd";

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于从类给窗体控件赋值的问题