大家好,我正在开发一个跨平台应用程序,允许用户先从list.view然后从选择器中选择。列表视图工作正常,现在我正在选择拾取器,但我遇到了问题。
我似乎实现了“picker.SelectedIndexChanged + =(sender,args)=>”用于处理列表中新元素的选择,但我在此问题上与发件人有关。错误是“错误CS0136无法在此范围内声明名为'sender'的本地或参数,因为该名称用于封闭的本地范围以定义本地或参数。”
据我所知,这个错误与func本身的even handler参数中的参数sender有关,但由于我没有声明一个新的变量发送者,这怎么会引发错误?下面是代码(现在只是一个模拟。这是基本实现,但选择器的内容将根据列表视图中选择的内容而改变。)
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];
}
};
}
我希望选择器成为焦点并允许用户在按下按钮后选择一个元素。任何想法?
现在,唯一的错误是我在发送方对象上遇到的语法错误,从技术上讲,选择器没有引起关注,但我确信一旦我将其编译就可以解决这个错误。
答案 0 :(得分:1)
您已在当前范围内使用sender
private void Button_Pressed(object sender, EventArgs e)
您需要将sender
的其他实例重命名为唯一的
picker.SelectedIndexChanged += (s, args) =>