zoukankan      html  css  js  c++  java
  • c# 兩窗體間通信

        窗體A為顯示窗體,窗體B為設定窗體。當窗體B設定完成后,希望A窗體顯示設定的結果。那窗體B如何操作窗體A呢?

    方法1:使用窗體的Owner屬性
        步驟 1)在窗體A呼叫窗體B之前,將窗體A賦予窗體B,即 fasSet.Owner = this;表示fasSet(窗體B)擁有窗體A,如下面代碼:
            /// <summary>
            
    /// 呼叫窗體B
            
    /// </summary>
            void WakeUpForm()
            {
                FmAlarmSet fasSet 
    = new FmAlarmSet();
                
    //將本窗體設為“設置窗體”所有
                fasSet.Owner = this;
                fasSet.ShowDialog();
            }

        步驟 2)在窗體B中實例化窗體A,這樣窗體B就可以操作窗體A了。如下代碼
                //得到傳入的FmAlarm窗體值
                FmAlarm fa = (FmAlarm)this.Owner;        
                
                
    //循環查找FormA中的控件,然后變更控件中的值
                foreach (Control con in fa.Controls)
                {
                    
    if (con.Name == "txtAlarmContent")
                    {
                        ((TextBox)con).Text 
    = txtAlarmContent.Text;
                    }
                }


    方法2:將窗體A作為控件傳入窗體B
        步驟:1)修改窗B的構造函數,加入參數,類型為窗體A
            /// <summary>
            
    /// 窗體A變量,定義為全局變量,便於調用
            
    /// </summary>
            FmAlarm fa = null;

            
    public FmAlarmSet(FmAlarm FmA)
            {
                InitializeComponent();
                fa 
    = FmA;
            }

        步驟:2)在窗體 A呼叫窗體方法的參數中加入自己,把自己傳給窗體B。
            /// <summary>
            
    /// 呼叫窗體B
            
    /// </summary>
            void WakeUpForm()
            {
                FmAlarmSet fasSet 
    = new FmAlarmSet(this);
                fasSet.ShowDialog();
            }

        步驟:3)在需要地方調用窗體A即可,如下代碼,改變窗體A中TextBox中的值。
                //循環查找FormA中的控件,然后變更控件中的值
                foreach (Control con in fa.Controls)
                {
                    
    if (con.Name == "txtAlarmContent")
                    {
                        ((TextBox)con).Text 
    = txtAlarmContent.Text;
                    }
                }
  • 相关阅读:
    11g新特性-dba_users安全性的一些增强
    sysbench的安装与使用(with MySQL)
    参数table_open_cache
    参数max_allowed_packet
    解决linux下unzip中文有乱码的问题
    11g添加asm
    有了iscsi存储怎么让主机识别以及使用创建lvm
    用rlwrap使sqlplus可以上下翻页
    卸载已经安装的rpm包
    物化视图刷新慢--有可能是mv log被多个mv使用造成的
  • 原文地址:https://www.cnblogs.com/scottckt/p/1155630.html
Copyright © 2011-2022 走看看