使用另一个类中的数据

时间:2011-03-11 14:16:08

标签: c# windows-phone-7

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

    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;
                    }

                } 

.............

在第一类中只有一些方法可以改变这个单选按钮和它们的条件,这里是代码, 这是在MainPage:

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;
                    }

            }

2 个答案:

答案 0 :(得分:2)

我想,你可以使用事件。当检查状态改变时,让具有radiobuttons的类触发事件。第二节应该知道它,可以订阅这个事件。

或者它有一些困难吗?

答案 1 :(得分:1)

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

Application.Run(new Main());

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

来创建和使用对此主窗体的引用

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

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

另一种方式是:在主窗体的某个地方,可能存在一个实例化第二个类的地方。在那个地方,您可以通过在第二个表单构造函数中传递对第一个表单的引用传递给第二个表单,或者您可以在第二个表单上添加一个属性,该属性可以将引用传递给第一个表单。在这两种情况下,由于代码将在MainForm本身内执行,因此您只需将this变量传递给第二种形式(在构造函数中或属性中)。

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

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

您可以使用对第一个表单的引用来调用此属性,并且它将返回一个布尔值指示当前选中单选按钮