首頁 >後端開發 >C++ >如何在 C# 中按名稱存取動態產生的 Windows 窗體控制項?

如何在 C# 中按名稱存取動態產生的 Windows 窗體控制項?

Susan Sarandon
Susan Sarandon原創
2025-01-27 13:06:09691瀏覽

How to Access Dynamically Generated Windows Forms Controls by Name in C#?

在 C# 中按名稱存取 Windows 窗體控制項

在 Windows 窗體開發中,一個常見的場景是需要根據控制項名稱動態存取控制項。當以程式設計方式產生控製或處理複雜的介面時,這非常有用。

問題:

我有一個名為「myMenu」的動態產生的 ToolStripMenuItem。如何以程式方式存取它,就像它是窗體的成員一樣?

解答:

要按名稱存取 Windows 窗體控件,可以使用 Control.ControlCollection.Find 方法。此方法接受一個字串參數,表示要尋找的控制項的名稱。

<code class="language-csharp">ToolStripMenuItem myMenu = (ToolStripMenuItem)this.Controls.Find("myMenu", true)[0];</code>

在這裡,我們首先將 Control.ControlCollection.Find 的結果強制轉換為我們正在尋找的特定控制項類型 (ToolStripMenuItem)。然後,我們存取傳回數組中的第一個元素,因為 Find 方法傳回一個符合控制項的陣列。

範例

以下程式碼片段示範如何從 XML 檔案動態產生 ToolStripMenuItems 並按其產生的名稱存取它們:

<code class="language-csharp">// 加载 XML 文件并创建 ToolStripMenuItems
XDocument doc = XDocument.Load("menu.xml");
foreach (XElement menuitem in doc.Root.Elements("MenuItem"))
{
    string name = menuitem.Attribute("Name").Value;
    ToolStripMenuItem item = new ToolStripMenuItem(name);

    // 在此处添加事件处理程序或其他逻辑...

    this.Controls.Add(item);
}

// 按名称访问菜单项
ToolStripMenuItem myMenu = (ToolStripMenuItem)this.Controls.Find("myMenu", true)[0];</code>

在此範例中,可以存取並操作 myMenu ToolStripMenuItem,就好像它是窗體的直接定義成員一樣。

以上是如何在 C# 中按名稱存取動態產生的 Windows 窗體控制項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn