C# 在另一个类中使用来自一个类的数据

C# 在另一个类中使用来自一个类的数据,c#,windows-phone-7,C#,Windows Phone 7,我试图找到这个问题的答案,但运气不好,所以,如果有人知道,谢谢。好的,我有两个类,在一个类中有一些单选按钮可以检查,在另一个类中我想要一个单选按钮状态改变的信息,这是第二个类的代码部分: static void client_Download(object sender, DownloadStringCompletedEventArgs e) { MainPage mng = new MainPage();//(i tried th

我试图找到这个问题的答案,但运气不好,所以,如果有人知道,谢谢。好的,我有两个类,在一个类中有一些单选按钮可以检查,在另一个类中我想要一个单选按钮状态改变的信息,这是第二个类的代码部分:

    static void client_Download(object sender, DownloadStringCompletedEventArgs e)
            {
                MainPage mng = new MainPage();//(i tried this, but no luck, is this ok?)

                if (e.Error != null)
                {

                    if (mng.radioButton1.IsChecked == true)
                    {
                        MessageBox.Show("Message1");
                        return;
                    }

                    else
                        if (mng.radioButton2.IsChecked == true) ;
                    {
                        MessageBox.Show("Message2");
                        return;
                    }
                    else
                        if (mng.radioButton3.IsChecked == true) ;
                    {
                        MessageBox.Show("Message3");
                        return;
                    }

                } 

.............
在第一节课中,只有一些方法可以改变单选按钮及其条件,下面是代码, 这在主页上:

private void button1_Click(object sender, RoutedEventArgs e)
        {

            if (radioButton1.IsChecked == true)
            {
                MessageBox.Show(RSS_citac.JezikEng.Message);
                ApplicationTitle.Text = RSS_citac.JezikEng.ApplicationTitle;
                PageTitle.Text = RSS_citac.JezikEng.PageTitle;
                textBlock1.Text = RSS_citac.JezikEng.textblock;
                button1.Content = RSS_citac.JezikEng.buttonOk;
                button2.Content = RSS_citac.JezikEng.buttonCancel;
                radioButton1.Content = RSS_citac.JezikEng.radioButton1;
                radioButton2.Content = RSS_citac.JezikEng.radioButton2;

                reloadFeeds.Text = RSS_citac.JezikEng.reloadFeeds;
                manageFeeds.Text = RSS_citac.JezikEng.manageFeeds;
                changeLang.Text = RSS_citac.JezikEng.changeLanguage;

                buttonRead.Content = RSS_citac.JezikEng.buttonRead;
                buttonCancel.Content = RSS_citac.JezikEng.buttonCancelNaUnosu;


                stackPanel1.Visibility = Visibility.Collapsed;
                border1.Visibility = Visibility.Collapsed;
                grid1.Visibility = Visibility.Collapsed;

            }
            else
                if (radioButton2.IsChecked == true)
                {


                    MessageBox.Show(RSS_citac.JezikSrb.Message);
                    ApplicationTitle.Text = RSS_citac.JezikSrb.ApplicationTitle;
                    PageTitle.Text = RSS_citac.JezikSrb.PageTitle;
                    textBlock1.Text = RSS_citac.JezikSrb.textblock;
                    button1.Content = RSS_citac.JezikSrb.buttonOk;
                    button2.Content = RSS_citac.JezikSrb.buttonCancel;
                    radioButton1.Content = RSS_citac.JezikSrb.radioButton1;
                    radioButton2.Content = RSS_citac.JezikSrb.radioButton2;
                    radioButton3.Content = RSS_citac.JezikSrb.radioButton3;


                    reloadFeeds.Text = RSS_citac.JezikSrb.reloadFeeds;
                    manageFeeds.Text = RSS_citac.JezikSrb.manageFeeds;
                    changeLang.Text = RSS_citac.JezikSrb.changeLanguage;

                    buttonRead.Content = RSS_citac.JezikSrb.buttonRead;
                    buttonCancel.Content = RSS_citac.JezikSrb.buttonCancelNaUnosu;

                    stackPanel1.Visibility = Visibility.Collapsed;
                    border1.Visibility = Visibility.Collapsed;
                    grid1.Visibility = Visibility.Collapsed;
                 }
                else
                    if (radioButton3.IsChecked == true)
                    {

                        MessageBox.Show(RSS_citac.JezikGer.Message);
                        ApplicationTitle.Text = RSS_citac.JezikGer.ApplicationTitle;
                        PageTitle.Text = RSS_citac.JezikGer.PageTitle;
                        textBlock1.Text = RSS_citac.JezikGer.textblock;
                        button1.Content = RSS_citac.JezikGer.buttonOk;
                        button2.Content = RSS_citac.JezikGer.buttonCancel;
                        radioButton1.Content = RSS_citac.JezikGer.radioButton1;
                        radioButton2.Content = RSS_citac.JezikGer.radioButton2;
                        radioButton3.Content = RSS_citac.JezikGer.radioButton3;

                        reloadFeeds.Text = RSS_citac.JezikGer.reloadFeeds;
                        manageFeeds.Text = RSS_citac.JezikGer.manageFeeds;
                        changeLang.Text = RSS_citac.JezikGer.changeLanguage;

                        buttonRead.Content = RSS_citac.JezikGer.buttonRead;
                        buttonCancel.Content = RSS_citac.JezikGer.buttonCancelNaUnosu;

                        stackPanel1.Visibility = Visibility.Collapsed;
                        border1.Visibility = Visibility.Collapsed;
                        grid1.Visibility = Visibility.Collapsed;
                    }

            }

我想,你可以使用事件。让带有单选按钮的类在检查状态更改时触发事件。第二个类,应该知道它,可以订阅这个事件


或者有什么困难吗?

我想,您可以使用事件。让带有单选按钮的类在检查状态更改时触发事件。第二个类,应该知道它,可以订阅这个事件

或者有什么困难吗?

在应用程序的main()函数中(将在某个静态类中),您将看到一行代码

Application.Run(newmain())

这行代码实例化(创建)主窗体的一个实例,然后运行它。在第二个类中,您需要有一个对该主窗体的引用,以便访问存储在该窗体类实例中的任何数据(任何实际数据)。通过将上面的代码更改为,您可以创建并使用对此主窗体的引用:

var myMainForm=new Main(); Application.Run(myMainForm)

您可以通过多种方式将thsi引用传递给第二种形式。您可以在主函数所在的任何静态类中使该变量成为静态变量。然后,(如果静态类名为
static class Program
,您可以通过键入:`Program.myMainForm'从应用程序中的任何位置访问它)

另一种方法是:在主窗体的某个地方,可能有一个地方您正在实例化第二个类。在这个地方,您可以通过在第二个窗体构造函数中传递对第一个窗体的引用来传递对第二个窗体的引用,或者您可以在第二个窗体上添加一个属性,该属性可以传递对第一个窗体的引用例如,由于代码将在MainForm本身内部执行,您只需将
这个
变量传递给第二个表单(在构造函数中或属性中)

在任何情况下,一旦对第一个表单的引用可以在第二个表单上访问,您就需要在第一个表单上有一些公共属性,这些属性可以从第二个表单(通过引用)调用,以返回所需的数据。在您的示例中,在第一个表单上,只需添加如下属性

public bool radioButtonChecked  { get { return radiobutton1.Checked; } } 
您可以使用对第一个表单的引用调用此属性,当您的应用程序的main()函数(将在某个静态类中)中选中单选按钮时,它将返回一个布尔指示

Application.Run(newmain());

这行代码实例化(创建)主窗体的一个实例,然后运行它。在第二个类中,您需要有一个对该主窗体的引用,以便访问任何数据(实际上是任何数据)已存储在form类的该实例中。您可以通过将上面的代码更改为:

var myMainForm=new Main(); Application.Run(myMainForm)

您可以通过多种方式将thsi引用传递给第二个表单。您可以在主函数所在的任何静态类中使该变量成为静态变量。然后,(如果该静态类命名为
static class Program
,您可以通过键入:`Program.myMainForm'从应用程序中的任何位置访问它)

另一种方法是:在主窗体的某个地方,可能有一个地方您正在实例化第二个类。在这个地方,您可以通过在第二个窗体构造函数中传递对第一个窗体的引用来传递对第二个窗体的引用,或者您可以在第二个窗体上添加一个属性,该属性可以传递对第一个窗体的引用例如,由于代码将在MainForm本身内部执行,您只需将
这个
变量传递给第二个表单(在构造函数中或属性中)

在任何情况下,一旦对第一个表单的引用可以在第二个表单上访问,您就需要在第一个表单上有一些公共属性,这些属性可以从第二个表单(通过引用)调用,以返回所需的数据。在您的示例中,在第一个表单上,只需添加如下属性

public bool radioButtonChecked  { get { return radiobutton1.Checked; } } 

您可以使用对第一个表单的引用调用此属性,当单选按钮当前处于选中状态时,它将返回一个布尔指示

第二个类与第一个类的关系如何?这也是一个单独的页面吗?它只是一个帮助类…问题是,在第二个类中,有一些从internet下载数据的方法,如果有互联网连接,会有一个“检查器”,如果没有互联网连接,则会显示messagebox。另一方面,在头等舱中,我可以更改语言,所以我想,如果语言更改(通过单选按钮完成),以更改第二个类中messagebox的内容。第二个类与第一个类如何关联?这也是一个单独的页面吗?它只是一个帮助类…问题是,在第二个类中有一些从internet下载数据的方法,并且有一个“检查程序”如果有internet连接,如果没有internet连接,则会显示messagebox。另一方面,在第一个类中,我可以更改语言,因此我希望,如果语言更改(通过单选按钮完成),则在第二个类中更改messagebox的内容。。