[C#] 透過設定Owner在子視窗中取得父視窗的參考

閱讀時間約 3 分鐘

在 C# 的視窗應用程式開發中,有時候我們需要在子視窗中取得父視窗的參考,以實現不同視窗之間的資訊交換或操作。這篇教學將會示範如何使用 Owner 屬性來在子視窗中取得父視窗的參考,以及如何進行相關操作。

建立父視窗和子視窗

首先,我們需要建立一個父視窗和一個子視窗。這裡我們使用 Windows Form 進行示範,你可以根據自己的項目需求進行調整。

建立父視窗

在 Visual Studio 中,創建新的 Windows Form 專案。然後,設計一個包含按鈕的父視窗,按鈕用於打開子視窗。

using System;
using System.Windows.Forms;

namespace ParentChildFormExample
{
public partial class ParentForm : Form
{
public ParentForm()
{
InitializeComponent();
}

private void openChildButton_Click(object sender, EventArgs e)
{
ChildForm childForm = new ChildForm();
childForm.Owner = this; // 設定子視窗的 Owner 爲父視窗
childForm.ShowDialog();
}
}
}

建立子視窗

在專案中,創建一個新的 Windows Form,作為子視窗。

using System;
using System.Windows.Forms;

namespace ParentChildFormExample
{
public partial class ChildForm : Form
{
public ChildForm()
{
InitializeComponent();
}

private void getInfoButton_Click(object sender, EventArgs e)
{
if (this.Owner is ParentForm parentForm)
{
MessageBox.Show($"父視窗的標題為: {parentForm.Text}", "父視窗資訊");
}
else
{
MessageBox.Show("找不到父視窗。");
}
}
}
}

處理資訊交換或操作

在子視窗中,你可以使用 Owner 屬性來取得父視窗的參考。這樣一來,你就可以根據需求進行資訊交換或操作。

在上述的範例中,當在子視窗的按鈕點擊事件中檢查 Owner 屬性是否為 ParentForm 的實例後,我們使用 MessageBox 顯示了父視窗的標題。你可以根據項目需求,在子視窗中執行其他操作,並使用父視窗的參考來實現更多功能。


透過 Owner 屬性,我們可以在 C# 中輕鬆地在子視窗中取得父視窗的參考,從而實現視窗之間的資訊交換和操作。這種機制在開發多視窗應用程式時特別有用,可以提升用戶體驗並實現更多功能。

avatar-img
67會員
120內容數
這裡將以輕鬆風格,深入探討程式設計的基礎和高級概念。從程式語言到演算法,我們將以易懂的方式解釋每個主題,讓你輕鬆掌握。無論你是初學者或有經驗者,都能在這裡找到適合你的內容。無論你的目標是成為專業開發者還是擴展知識,我們都會陪伴你一同成長!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
程式輕鬆玩 的其他內容
在這篇教學中,我們將會學習如何使用 C# 語言再設定的時間動作,模擬批次自動化功能。使用 System.Windows.Forms.Timer 來達到這個目的。同時,我們也將會示範如何取得目前時間的不同屬性,像是年份、日期、分鐘等。
在程式設計中,錯誤處理是一個不可或缺的部分。C#提供了強大的錯誤處理機制,讓我們能夠更有效地管理和處理程式執行中可能出現的問題。本篇文章將帶你深入了解如何在C#中捕捉與處理錯誤,確保你的程式在遇到問題時能夠優雅地回應。
在這份教學文章中,我們將一步步示範如何使用C#程式語言和ZXing套件生成一個不顯示資訊的CODE128條碼。這將有助於您在自己的應用程式中生成純條碼圖片,而無需顯示任何附加的文字資訊。
在 C# 中,List 是一個常見且實用的集合類型,可以儲存一組元素並進行各種操作。本篇教學將帶你深入了解如何操作 List 以及進行降冪排序。我們將使用一系列範例程式碼來說明這些概念。
JSON(JavaScript Object Notation)是一種常用的數據交換格式,用於在不同的應用程序之間傳遞結構化數據。在C#中,我們可以使用Newtonsoft.Json模組來處理JSON資料。
Line Notify 是 LINE 提供的一個服務,讓您可以透過 API 傳送訊息到您的 LINE 好友或群組。在這篇教學文章中,我們將介紹如何使用 C# 透過 Line Notify 服務傳送訊息,同時確保連線是使用 TLS 1.2以上加密。
在這篇教學中,我們將會學習如何使用 C# 語言再設定的時間動作,模擬批次自動化功能。使用 System.Windows.Forms.Timer 來達到這個目的。同時,我們也將會示範如何取得目前時間的不同屬性,像是年份、日期、分鐘等。
在程式設計中,錯誤處理是一個不可或缺的部分。C#提供了強大的錯誤處理機制,讓我們能夠更有效地管理和處理程式執行中可能出現的問題。本篇文章將帶你深入了解如何在C#中捕捉與處理錯誤,確保你的程式在遇到問題時能夠優雅地回應。
在這份教學文章中,我們將一步步示範如何使用C#程式語言和ZXing套件生成一個不顯示資訊的CODE128條碼。這將有助於您在自己的應用程式中生成純條碼圖片,而無需顯示任何附加的文字資訊。
在 C# 中,List 是一個常見且實用的集合類型,可以儲存一組元素並進行各種操作。本篇教學將帶你深入了解如何操作 List 以及進行降冪排序。我們將使用一系列範例程式碼來說明這些概念。
JSON(JavaScript Object Notation)是一種常用的數據交換格式,用於在不同的應用程序之間傳遞結構化數據。在C#中,我們可以使用Newtonsoft.Json模組來處理JSON資料。
Line Notify 是 LINE 提供的一個服務,讓您可以透過 API 傳送訊息到您的 LINE 好友或群組。在這篇教學文章中,我們將介紹如何使用 C# 透過 Line Notify 服務傳送訊息,同時確保連線是使用 TLS 1.2以上加密。
你可能也想看
Google News 追蹤
呈上篇[Python基礎]類別繼承(Inheritance) 中使用的super()並加以說明,此篇文章主要敘述使用super()有什麼好處及優點。 super():是一個內建函數,用來返回父類別的物件,以便你可以使用這個物件來呼叫父類別的方法或屬性。 這種做法的目的是在子類別中繼承並延續父類別
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
Thumbnail
歡迎來到我們的Windows教學!在這裡,你將學習如何有效使用Windows操作系統。我們將探索各種基本操作,如文件管理、桌面設置、程式安裝和系統設置。無論你是新手還是希望深入了解Windows的使用者,我們的教學內容都能夠幫助你提升操作技能,使你在日常使用和工作中更加流暢和高效。立即加入我們,開啟
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
※ Object(物件) & Constructor Function(建構式函式) Object(物件)是什麼? 物件是一種「可以將資料、程式碼包含在其中」的資料結構。 Object(物件)的兩種創造方式: 匿名物件:直接使用"{}"。沒有特別的名字,直接從Object中繼承過來的一個物件
當 父組件 有數據想傳送到 子組件 就可以使用props 1​. 父層傳遞設置 可以在父組件的屬性給予一個值,當作要傳送到子組件的資料。 父層組件​ : <!-- App.vue (父組件) --> <template> <div> <ChildComponent greetin
《兒子使用說明書》中,我印象最深刻的觀念包括「視而不見」的行為模式和兒子對母親的深度依賴,另外,提供一個專屬空間有助於促進創造力。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
過年前在LINE社群有網友提出一個問題。 🥹網友:在報導確認的A欄儲存格輸入員工qr會跳出視窗顯示員工的資料 🥹網友:主要是跳出視窗的VBA我不確定要怎麼下手比較好~ 😎我:為什麼要跳出來視窗? 這樣每輸入一次就跳一個 要一直關視窗誒 🥹網友:想給人員看並確認的,要辦活動
呈上篇[Python基礎]類別繼承(Inheritance) 中使用的super()並加以說明,此篇文章主要敘述使用super()有什麼好處及優點。 super():是一個內建函數,用來返回父類別的物件,以便你可以使用這個物件來呼叫父類別的方法或屬性。 這種做法的目的是在子類別中繼承並延續父類別
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
Thumbnail
歡迎來到我們的Windows教學!在這裡,你將學習如何有效使用Windows操作系統。我們將探索各種基本操作,如文件管理、桌面設置、程式安裝和系統設置。無論你是新手還是希望深入了解Windows的使用者,我們的教學內容都能夠幫助你提升操作技能,使你在日常使用和工作中更加流暢和高效。立即加入我們,開啟
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
※ Object(物件) & Constructor Function(建構式函式) Object(物件)是什麼? 物件是一種「可以將資料、程式碼包含在其中」的資料結構。 Object(物件)的兩種創造方式: 匿名物件:直接使用"{}"。沒有特別的名字,直接從Object中繼承過來的一個物件
當 父組件 有數據想傳送到 子組件 就可以使用props 1​. 父層傳遞設置 可以在父組件的屬性給予一個值,當作要傳送到子組件的資料。 父層組件​ : <!-- App.vue (父組件) --> <template> <div> <ChildComponent greetin
《兒子使用說明書》中,我印象最深刻的觀念包括「視而不見」的行為模式和兒子對母親的深度依賴,另外,提供一個專屬空間有助於促進創造力。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
過年前在LINE社群有網友提出一個問題。 🥹網友:在報導確認的A欄儲存格輸入員工qr會跳出視窗顯示員工的資料 🥹網友:主要是跳出視窗的VBA我不確定要怎麼下手比較好~ 😎我:為什麼要跳出來視窗? 這樣每輸入一次就跳一個 要一直關視窗誒 🥹網友:想給人員看並確認的,要辦活動