• 比较窗体调用的两种方法哪种好?(1.用事件 2.在窗体2中定义窗体1的成员)

  • 本文关于 c#
  • CodeGo.net > 比较窗体调用的两种方法哪种好?(1.用事件 2.在窗体2中定义窗体1的成员)
  •  

    比较窗体调用的两种方法哪种好?(1.用事件 2.在窗体2中定义窗体1的成员)



    c#
    比较窗体调用的两种方法哪种好?(1.用事件 2.在窗体2中定义窗体1的成员)
    ------------------------------------------------------------------------
    看一些文章,好象就是这两种方法。(还有一种用静态成员的方法,不在讨论之列)
    下面,别贴出两个窗体的代码,认为,哪种方式更好些呢?
    方法1:用事件
    namespace atmp
    {
    public partial class Form1 : Form
    {
    Form2 frm2;
    public Form1()
    {
    InitializeComponent();
    }
    void MainFormShow()
    {
    txt1.Text = frm2.strForm2;
    }
    private void button1_Click(object sender, EventArgs e)
    {
    frm2 = new Form2();
    frm2.myrefresh+=new EventHandler(
    (object sender1, EventArgs e1) =>
    { MainFormShow(); });
    //frm2.ShowDialog();
    frm2.Show();
    }
    }
    }
    namespace atmp
    {
    public partial class Form2 : Form
    {
    public event EventHandler myrefresh;
    public string strForm2;
    public Form2()
    {
    InitializeComponent();
    }
    //刷新另一个窗体的文本框
    private void button1_Click(object sender, EventArgs e)
    {
    this.strForm2 = "qqqqqqqqqqqqqqqqq";
    myrefresh(null,null);
    }
    private void Form2_Load(object sender, EventArgs e)
    {
    }
    }
    }
    方法2:在窗体2中定义窗体1的成员
    namespace c1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
    Form2 frm2 = new Form2();
    frm2.frm1 = this;
    frm2.Show();
    }
    public void setvalue(string str1)
    {
    this.textBox1.Text = str1;
    }
    }
    }
    namespace c1
    {
    public partial class Form2 : Form
    {
    public Form1 frm1;
    public Form2()
    {
    InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
    this.frm1.setvalue("adsfasdfasdf");
    }
    }
    }

    本文地址 :CodeGo.net/1482700/
    -------------------------------------------------------------------------------------------------------------------------
    1.如果你遇到几十个不同种类的Form,几百个或者更多的实例,那么有一点基本的设计概念,才能让系统整体代码更少效率更高。家具上上非常简洁高效的榫卯结构,其接口必须用心设计,那些连接口都想胡乱绑定一下就算的人怎么可能在整体上简单高效呢?
    2. 可是方法1大代码比方法2的代码多很多呀 从效率来讲,是不是也没有第二种高呀?
    如果你就是整天纠结着两个Form CodeGo.net,那么当然看不到稍微高层一点的目的。对于设计者和管理者简单,Form2并不像当然地依赖于Form1,而是有事通知所有客户端。
    3. 可以定义一个公共静态类,然后在这个类里实例化所以的Form 窗体(也需要是静态的) 如果调用的时候直接类名.要调用的窗体名称 这样省的频繁的实例化
    4. 还有一种就是在new的时候传值
    form1 a =new form1(要传的值)
    5. 对象间通信问题,当然Event好,
    这里也没有可比性,第二种方法太不符合低偶
    本文标题 :比较窗体调用的两种方法哪种好?(1.用事件 2.在窗体2中定义窗体1的成员)
    本文地址 :CodeGo.net/1482700/
    1. 我在哪里可以找到一个很好的教程上bubbling?
    2. 还是c#引用c++,关于传递结构的,实在是太纠结
    3. C ++中返回的Web服务价值
    4. c#中的new也是申堆内存吗?
    5. 命名用户控件。conventions?
    6. TCP/IP socket 问题
    7. 我怎么能值设置为rhino的对象?
    8. SQL语句把一列转化为行后 无法读取具体的值 为什么
    9. 从XSL生成HTML:FO使用C#
    10. Winfrom 自定义控件的双击事件及控件便利

     
    

    Copyright © 2017 CodeGo.net
    http://codego.net/xinwen/ 足球比分网 足球比分 医药招商网 邵阳县新闻