如何在班级中找到特定的元素/字段

时间:2014-09-08 16:23:56

标签: c# button findcontrol

我有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类中找到相同的命名字符串数据。 我需要在&#34;链接&#34;中找到相同名称的字符串数据。类。并显示messagebox,例如按钮a2消息框显示data2。请帮忙。

2 个答案:

答案 0 :(得分:0)

这样做的唯一方法是通过反射,这是一个非常好的指标,它是解决整体问题的正确方法。

话虽如此,以下代码将会这样做:

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

请参阅MSDN了解GetFieldSO了解如何使用它来访问静态成员。

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

答案 1 :(得分:0)

        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"