1. 程式人生 > >winform在子窗體呼叫父窗體的控制元件

winform在子窗體呼叫父窗體的控制元件

一、如果是在兩個無關的窗體間要實現上述的訪問可以使用Form的Owenr屬性 
           在Form1中新增: 
          Form2   form2   =   new   Form2(); 
          this.AddOwnedForm(form2); 或ji.ShowDialog(this);向父窗體新增附屬窗體
          在Form2中新增: 
          Form1   form1   =   (Form1)this.Owner;     //直接將已經存在的Form1與form1關聯起來 

         之後就可以適時的訪問Form1中的Public變量了

二、如果是在MDI窗體間要實現上述的訪問可以使用Form的ParentForm屬性 
        在Form1中新增: 
       Form2   form2   =   new   Form2(); 
       form2.MdiParent   =   this; 
       在Form2中新增: 

        Form1   form1   =   (Form1)this.ParentForm;     //直接將已經存在的Form1(MDI主視窗)與form1關聯起來

       之後就可以適時的訪問Form1中的Public變量了

或者

         //父窗體中
          Form child=new Form(this)   //this是指父窗體
          child.show();
          //子窗體中
          Form parent;
          public child(Form parent)
          {
         this.parent=parent;
         }
         //子窗體事件中
         parent.屬性呼叫就可以了,其實對於父窗體上的控制元件,可以通父窗體.Controls訪問到要修改的子控制元件而不用刻意去把那個控制元件設定成Public。

相關推薦

C#視窗呼叫視窗控制元件的委託實現

        有時子窗體的操作需要實時呼叫父窗體中的控制元件操作,比如在父窗體的文字框中顯示子窗體中的輸出: 主窗體: MainForm.cs: public partial class MainForm : Form { publi

winform窗體呼叫窗體控制元件

一、如果是在兩個無關的窗體間要實現上述的訪問可以使用Form的Owenr屬性             在Form1中新增:            Form2   form2   =   new   Form2();            this.AddOwnedForm(

VB.NET學習筆記:WinForm如何正確呼叫自定義控制元件

測試環境:windows 7和Microsoft Visual Studio 2015 點選下載本文資源 在《VB.NET學習筆記:WinForm自定義DataGridView分頁組合控制元件》博文中,呼叫分頁控制元件的窗體與分頁控制元件同在一個專案裡。筆者從《一種正確呼叫自定義控制元件

C#中實現 窗體控制呼叫窗體成員和控制元件

因專案需要,我要在一個子窗體form6中呼叫建立它的父窗體form4的一個combobox的方法和屬性。 網上搜集的,沒有統一答案,試驗了下。 可行方法如下: 在form6的class類定義中加入一個私有成員變數,用來記錄父窗體; private form M; 在f

jquery 窗體獲取窗體控制元件並賦值,後臺呼叫前臺指令碼或者在後臺直接寫指令碼

子窗體前臺指令碼方法,獲取父窗體的控制元件並賦值,使用iframe了: <script type="text/javascript"> function SetCou

winform中一個自定義控制元件呼叫窗體中的事件

//1定義個委託用來掉方法 MyEventArgs類要你自己寫裡面可以加些你認為有用的屬性,不想用的話可以不加這個引數, public delegate void 相關事件的委託(object sen

WinForm中如何實現在容器控制元件中嵌入form窗體(panel與窗體)

今天在做專案時候遇到一個問題,窗體分為左右兩部分,要求在左邊欄點選按鈕時,右邊動態載入窗體最後想到用panel實現,經歷幾次失敗,並查詢資料後,終於搞定說明:如果多次切換需加入 panel.clear();清空原有panel內容環境:C# VS2008 方法一:通過給panel載入子元素實現

C# 窗體窗體控制元件傳值

在寫程式的時候用到了由子窗體確定引數後返回給父窗體。這就涉及到窗體間傳值的問題。C#是不提供窗體間變數和控制元件的直接相互呼叫(就是說即使Form1的變數和控制元件屬性都設為Public或者Internal,在Form2種也不能通過 Form1.變數 或者 Form1.控制

Winform窗體重新整理窗體

呼叫窗體(父):Form1,被呼叫窗體(子):Form2方法1:   所有權法//Form1://需要有一個公共的重新整理方法public   void   Refresh_Method(){//...}//在呼叫Form2時,要把Form2的所有者設為Form1Form2 

C# 窗體呼叫窗體中的方法(或多窗體之間方法呼叫)

C# Code:///<summary>/// 主窗體,實現IMdiParent介面///</summary>public partial class frmParent : Form, IMdiParent {    public frmParent()    {       In

【C#】winform窗體窗體傳值,窗體窗體傳值

【1】子窗體與父窗體傳值 【2】子窗體與子窗體傳值: 前提:Form1座位父窗體,然後它new出來了兩個個子窗體分別為Form2與Form3; 要求:可以及時把Form2中產生的資料,傳遞給Form

關於呼叫自己寫控制元件庫後,導致主窗體出現索引超範圍,或者值無效等等的問題,以下是解決方法

錯誤如下圖,該錯誤在程式碼中並不會報紅。大家可以看看能否解決。     自定義窗體控制元件,在呼叫的時候會有一個預讀的過程,這個時候如果我們定義下拉選單,如下: comboBox1.Items.Clear(); comboBox1.Items

AE二次開發,解決窗體使用窗體的AxControl控件

控件 con pri apc sha item object new end 在子窗體寫構造函數,然後再在父窗體按鈕點擊事件下寫 public frmIDW(AxMapControl axMapControl1) { Initia

C#基礎之 二十二 C#窗體中常用的控制元件

前言       第一次看這部分的視訊的時候,我就有一個非常深的感觸,當時看到這些控制元件的名稱和“長相”之後,覺得和VB真的是如出一轍,沒有什麼不一樣的,只不過這一個是C#,以前接觸的是VB,這樣的話應該還是比較容易接受的

delphi7 如何描述窗體上的全部控制元件

  在delphi開發中,經常需要用到窗體中控制元件的name名來進行物件方法或屬性的呼叫,所以如何對delphi窗體進行簡潔,清楚,完整的描述就很重要。最好能不看介面也能進行介面編碼,具體如下表所示: xxx介面 控制元件型別 name  caption

C#窗體窗體互動

父窗體呼叫子窗體 父窗體在建立子窗體後,可以直接通過子窗體物件呼叫子窗體中的公有屬性和方法。 Form2 f2 = new Form2(); string value= f2.value; f2.getValue();

MDI窗體窗體中居中顯示的設定

需要在建構函式或者load事件函式中加入以下程式碼: form.StartPosition=FormStartPosition.Manual; form.StartPosition=FormStartPosition.CenterScreen; 有的人說 form.Star

WPF窗體窗體移動而移動

主窗體 /// <summary> /// 選單-關於 /// </summary> /// <param name="sender"></param&

C# 窗體窗體中顯示位置

C#怎麼設定子窗體在主窗體中居中顯示 問題的開始是由C#傳傳看主群裡的印醒提出來的,下面我來說一下解決方案吧 其實表面上看是很簡單的 開始吧,現在有兩個窗體Form1主窗體,Form2子窗體 而且我相信大部分人都會這樣寫 在子窗體的Load事件中

C# Windows應用窗體使用者自定義控制元件--開關實現

先準備了兩個好看的開關圖片: 將圖片資源匯入專案 開啟Properties下Resources.rex: 選擇影象: 新增現有檔案:(將準備好的圖片新增) 新增完成,可以看到多了一個Resources資料夾,裡面就是我們剛剛新增的圖