2011-03-11 7 views
0

이 질문에 대한 답을 찾으려했지만 애매한 사람에게는 감사합니다. 감사합니다. 하나의 클래스에는 체크 할 수있는 라디오 버튼이 있고 다른 클래스에는 라디오 버튼 상태가 변경된 정보가 필요합니다. 여기에는 두 번째 클래스의 코드 부분이 있습니다 :한 클래스의 데이터를 다른 클래스에서 사용하는 경우

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

      } 
+1

두 번째 클래스는 첫 번째 클래스와 어떤 관련이 있습니까? 그것도 별도의 페이지인가요? –

+0

그것은 단지 도우미 클래스입니다. 두 번째 클래스는 인터넷에서 데이터를 다운로드하는 몇 가지 방법이며, 인터넷 연결이 있으면 "검사기"가 있습니다. 인터넷에 연결되어 있지 않으면 messagebox가 있습니다. 가 표시됩니다. 반면에 일등석에서는 언어를 변경할 가능성이 있으므로 언어가 변경되면 (라디오 버튼을 통해 수행됨) 두 번째 클래스의 messagebox 내용을 변경하고 싶습니다. – cvele

답변

2

내 생각, 당신은 이벤트를 사용할 수 있습니다. 체크 상태가 변경되면 라디오 버튼을 사용하여 수업을 시작하도록합니다. 그것에 대해 알아야 할 두 번째 클래스는이 이벤트에 가입 할 수 있습니다.

또는 그것에 대해 약간의 어려움이 있습니까? (일부 정적 클래스에있을 것입니다) 응용 프로그램의 main() 함수는

Application.Run(new Main());

이 줄의 코드가 인스턴스화

을 말한다 코드의 라인을 볼 수에서

+0

나는 그것을 시험 할 것이다, 고마운 .... 그러나 나는 약간의 어려움을 가지고있다. ... – cvele

1

인스턴스를 (생성) 주 양식의 다음 그것을 실행합니다. 두 번째 클래스에서는 폼 클래스의 해당 인스턴스에 저장된 모든 데이터 (실제로는 아무 것도)에 액세스하기 위해이 기본 폼에 대한 참조가 필요합니다. 위 코드를 다음과 같이 변경하여이 기본 양식에 대한 참조를 만들고 사용할 수 있습니다.

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

여러 가지 방법으로 두 번째 양식에 참조를 전달할 수 있습니다. 이 변수는 main 함수가있는 정적 클래스가 무엇이든간에 정적 변수로 만들 수 있습니다. (정적 클래스의 이름은 static class Program이며, 응용 프로그램의 어디에서든지 다음과 같이 입력하여 액세스 할 수 있습니다 :`Program.myMainForm '

또 다른 방법은 : 메인 폼의 어딘가에 아마도 두 번째 클래스를 인스턴스화하는 장소가있을 것입니다. 그 곳에서 두 번째 폼 생성자로 전달하여 두 번째 폼에 대한 참조를 첫 번째 폼으로 전달할 수 있습니다 , 또는 첫 번째 폼에 대한 참조를 전달할 수있는 두 번째 폼에 속성을 추가 할 수 있습니다. 두 경우 모두 코드가 MainForm 자체 내에서 실행되므로 변수를 두 번째 폼에 전달하면됩니다 생성자 또는 속성)

어떤 경우에도 두 번째 폼에서 액세스 할 수있는 첫 번째 폼에 대한 참조가 있으면 두 번째 폼에서 호출 할 수있는 첫 번째 폼에 public 속성이 있어야합니다 (참조를 통해). 원하는 데이터를 반환하십시오. 당신의 예에서, 첫 번째 양식에, 당신이 첫 번째 양식에 대한 참조를 사용하여이 속성을 호출 할 수 있습니다이

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

같은 속성을 추가하고, 라디오 버튼은 현재

을 체크 처리 여부 indicatiung 부울을 반환합니다
+0

세부 설명에 감사드립니다 ... 나는 내가 할 수있는 일을 간다. – cvele

관련 문제