1. 程式人生 > >C# 子窗體向父窗體控制元件傳值

C# 子窗體向父窗體控制元件傳值

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

通過查詢資料,有兩種方便的方法可實現傳值目的。下面舉例說明:

Form1是第一個窗體,包括Button11,Button12兩個按鈕。Button11點選事件產生Form2 窗體。

Form2是第二個窗體,包括Button21一個按鈕。Button21 點選事件改變Button11和Button12的Text屬性。

1、公用靜態變數

首先在Form1種定義一個靜態變數來得到Button11

public/internal static Button pButton;

然後在Form1_Load中賦值:

pButton=Button11;

此時就可以在Button11的事件中寫如下程式碼來實現Form2

Form2 pForm2=new Form2();

pForm2.Show();

最後就可以在Form2 的Button21事件中來傳遞值

Form1.pButton.Text = "哈哈";

2、委託

該方法稍微麻煩點,首先要把Form1 的Button12的Modifiers屬性修改為Public或者Internal。

然後前面Form1的Button11的事件中Form2例項化程式碼需要修改為:

Form2 pForm2=new Form2(this);

最後在Form2的Button21點選事件中寫程式碼為:

Form1 pForm1 = new Form1();
pForm1 = (Form1)this.Owner;
pForm1.button2.Text = "Hello";

這樣子就完成了控制元件值的傳遞了。

相關推薦

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

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

C# 窗體窗體控制元件

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

[轉]C#執行緒更新UI控制元件的方法例項總結

[我的評論:之前專案做的C#客戶端對於多執行緒修改UI使用的就是這個,找了好些時間才找到,其他很多都是沒有再函式中直接使用Action<>放置delegate的,而是在全域性下先放一個delegate的宣告,很頭疼,特轉] [來源:http://www.jb51

巢狀Repeater獲取控制元件

<asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> OrderID: <%# Eval("OrderID")%>CustomerID : <asp:Label ID

c# winform:當窗體關閉時,更新窗體DataGridView控制元件

在子窗體中設定最後對話方塊的屬性,然後再主窗體中根據該屬性值,重新繫結DataGridView控制元件的值。 主窗體程式碼: public partial class MainForm.

winform在窗體呼叫窗體控制元件

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

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

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

C#Form.SplitContainer中清除控制元件textbox窗體.容器.控制元件

文章目錄 問題背景 問題程式碼 問題解決 正確清除程式碼 問題延申 問題背景 早上在完善不確定度計算器時,想要清空實驗資料輸入時所有textbox控制元件值。 問題程式碼

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

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

c# 類改變類資訊的問題,兩個窗體的問題

固定一個窗體在另一個窗體中首先需要設定父窗體IsMdiContainer屬性為True,然後在Load事件中加入以下語句: NewContact newConFrm = new NewContact(this); newConFrm.NewGroup = CreateGroup;

C#窗體窗體互動

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

C# 窗體窗體中顯示位置

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

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

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

C#下讓MDI窗體佈滿窗體的整個工作區

 前提是你已經建立了一個窗體Form1,並設定窗體的  IsMdiContainer  屬性為真,其次就是建立窗體的子窗體Form2,並設定所有的窗體的FormBorderStyle屬性為FixedSingle,最後就是設定了,在Form1呼叫Form2子窗體的處理程式中,新

C# 窗體窗體之間幾種的方式

做了很多專案,很多專案都用到子父窗體之間的傳值。。 父窗體傳入子窗體都比較簡單,而子窗體傳入父窗體因為有很多不通道的需求,所以·搞起來有點頭大。 先說父窗體傳入子窗體: 將父窗體控制元件上的值傳入子窗體的控制元件上: Form1為父窗體 Form2為子窗體 Form1 單

c# 把窗體嵌入到容器控制元件

(VS2005) 想把窗體嵌入到容器控制元件中,讓它只能在容器範圍內活動. 在窗體中新增一個  splitContainer容器 生成一個子窗體 From from2=new From(); 設定子窗體為非頂級窗體 form2.TopLevel = false; 設定子窗體的

C#】winform窗體窗體窗體窗體

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

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

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

vue 元件元件

Vue是一個輕量級的漸進式框架,對於它的一些特性和優點在此就不做贅述,本篇文章主要來探討一下Vue子父元件通訊的問題 首先我們先搭好開發環境,我們首先得裝好git和npm這兩個工具(如果有不清楚的同學請自行百度哦) 環境搭建步驟: 開啟git ,執行 npm insta

Vue中元件元件

Vue中父元件向子元件傳值 相關Html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title>