2017-12-05 10 views
1

皆さん、こんにちは、私は、ユーザーがlist.viewから最初に選択し、次にピッカーから選択できるクロスプラットフォームアプリケーションに取り組んでいます。リストビューは正常に動作していますが、現在はピッカーで作業していますが、問題が発生しました。ボタンプレスイベント後にピッカーを表示

"picker.SelectedIndexChanged + =(sender、args)=>"リストの新しい要素の選択を処理するために使用されているようですが、これに関する送信者に問題があります。エラーは "エラーです。CS0136ローカルまたはパラメータを 'sender'という名前のローカルまたはパラメータは、このスコープ内で宣言できません。その名前は、ローカルまたはスコープを定義するために囲むローカルスコープで使用されるためです。

私はこのエラーがfunc自体のevenハンドラパラメータからのパラメータ送信者に関連していることを理解していますが、新しい変数送信者を宣言していないので、どのようにエラーを投げていますか?以下のコードである(今のところただのモック。これは基本的な実装であるが、ピッカーの内容がリストビューで選択した内容に応じて変化しますが。)

private void Button_Pressed(object sender, EventArgs e) 
    { 
     Picker picker = new Picker 
     { 
      Title = "Select SubUnit", 
      VerticalOptions = LayoutOptions.Center 
     }; 

     string[] list = new string[] { "1", "2", "3", "4", "5" } ; 


     foreach(string subunit in list) 
     { 
      picker.Items.Add(subunit); 
     } 

     picker.Focus(); 

     picker.SelectedIndexChanged += (sender, args) => 
     { 
      if (picker.SelectedIndex == -1) 
      { 
       //ToDo. Prob unnecessary to handle. 
      } 
      else 
      { 
       string selectedSub = picker.Items[picker.SelectedIndex]; 
      } 
     }; 

    } 

私はピッカーがに期待しますフォーカスが入って、ボタンが押された後に要素を選択できるようになります。何か案は?

今のところ、エラーは送信者オブジェクトに掛かる構文エラーです。技術的にピッカーはフォーカスには達しませんが、これをコンパイルするとわかりました。

答えて

1

あなたはすでにあなたが

picker.SelectedIndexChanged += (s, args) => 
+0

うんユニークなものにsenderの他のインスタンスと名前を変更する必要があり、現在のスコープでsender

private void Button_Pressed(object sender, EventArgs e) 

を使用している、私はそれはのような単純なものになるだろう気持ちを持っていましたそれ。 –

関連する問題