簡體   English   中英

如何訪問用戶控件中的特定控件?

[英]How do I access a particular control within a user control?

假設我有一個用戶控件,其中包含一些控件,並且使該用戶控件在表單內部可見。 如何訪問該用戶控件中的特定控件? 例如,以前,如果我在表單中有標簽,則要做的只是label.Text =“ text”; 但是如何更改位於表單內部的用戶控件內部的標簽文本(例如)?

在用戶控件中創建一個公共方法,然后從表單中調用它:

public void SetCaption(string caption)
{
    label1.Text = caption;
}

現在以您的形式:

userControl1.SetCaption("text");

要按照注釋中的建議訪問控件本身,可以在usercontrol中創建一個公共屬性,該屬性返回所需的控件:

public Label MyLabel {get { return Label1; }}

然后以您的形式:

userControl1.MyLabel.Text = "text";

我不確定您的情況,因此我提供了一個解決方案:

通常,當您擁有大量相同類型的UIElement時,將使用用戶控件。 例如,我可能會將所有這些添加到堆棧面板中。 如果我在用戶控件類中有一個公共ID,則可以查找該特定ID並修改其文本。

MyUserControl.xaml.cs:

//ATextBox is a named Control
public MyUserControl(int ID)
{
    InitializeComponent();
    this.ID = ID;
    ATextBox.Text = "Something";
}

MainWindow.xaml.cs:

//MyStackPanel is a named Control
foreach (MyUserControl muc in MyStackPanel.Children)
{
    //ID is public get, private set
    if(muc.ID == 123456)
    {
        muc.ATextBox.Text = "Something Else";
    }
}

我對如何設置權限等持自由態度,但是希望這可以說明您可以使用的一種方式。 另外,如果用戶直接與用戶控件進行交互,則可以在用戶控件類內部設置邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM