簡體   English   中英

我如何在課程中找到特定的元素/字段

[英]How can i find a specific element/field in the class

我有2頁應用程序。 第一頁是MainPage,第二頁是類和名稱“鏈接”。 我在主頁上有按鈕。 我在“鏈接”中具有與按鈕同名的字符串變量。 例如

class Links
{      
    public static string a1 = "data1";
    public static string a2 = "data2";
    public static string a3 = "data3";
}

//Main page
public partial class MainPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();            
    }

    private void allclickevents(object sender, RoutedEventArgs e)
    {
       Button x = (Button)sender;
       string findthisname=x.Content.ToString();
       //I need to find the string data of the same name in "Links" class. And show messagebox, for ex if button a2 messagebox shows "data2".
    }
}

設計頁面(Xaml頁面):

<Button x:Name="a1" Content="a1" HorizontalAlignment="Left" Margin="260,48,0,0" VerticalAlignment="Top" Click="allclickevents"/>
<Button x:Name="a2" Content="a2" HorizontalAlignment="Left" Margin="360,48,0,0" VerticalAlignment="Top" Click="allclickevents"/>
<Button x:Name="a3" Content="a3" HorizontalAlignment="Left" Margin="460,48,0,0" VerticalAlignment="Top" Click="allclickevents"/>

所有按鈕的單擊事件都設置為allclickevents方法,並且我正在使用(按鈕)。 發送者並找到特定的按鈕名稱。 只需要在Links類中找到相同的命名字符串數據。 我需要在“鏈接”類中找到同名的字符串數據。 然后顯示messagebox,例如,如果按鈕a2 messagebox顯示data2 請幫忙。

做到這一點的唯一方法是通過反思,這是一個很好的指標,表明它不是解決整體問題的正確方法。

話雖如此,下面的代碼可以做到這一點:

string data = (string) typeof(Links).GetField(findthisname).GetValue(null);

有關如何使用它訪問靜態成員的信息,請參見MSDN中的GetFieldSO

要獲取消息框,只需使用MessageBox.Show(data)

        FieldInfo f_key = typeof(Links).GetField(p);
        var o = f_key.GetValue(null);

這些代碼應該可以工作,但是如果您使用Dictionary,它將變得更加容易,例如:

        Dictionary<String,String> links = new Dictionary<string, string>();
        links.Add("a1","data1");
        links.Add("a2", "data2");
        links.Add("a3", "data3");

使用時:

links["ai"]將返回"datai"

暫無
暫無

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

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