为了账号安全,请及时绑定邮箱和手机立即绑定

如何将变量传递给按钮单击事件?

如何将变量传递给按钮单击事件?

C#
千巷猫影 2023-07-09 16:42:51
我将一个变量从一个页面传递到另一个页面以获取弹出菜单。我希望能够将选定的顾问添加到收藏夹列表中。问题是,当我将变量传递到一页时,它只允许我将它用于该特定方法。我试图将其传递给按钮单击事件(OkayButtonClicked),以便将其保存到收藏夹列表中。我对此尝试了两种不同的攻击。我尝试过:使用 xaml 代码 x:Name 属性中的 FindByName 声明按钮。 Button okaybutton = FindByName("OkayButton") as Button;然后我尝试了两种不同的方式使用这个变量来传递字符串。一种方法是:okaybutton += (sender2, e2) => OkayButtonClicked(sender2, e2, selectedAdvisor);第二种方法是:okaybutton += delegate(object sender, EventArgs e) {   OkayButtonClicked(sender, e, selectedAdvisor); };(selectedAdvisor是从一页传递到我所在的当前页面的变量,这就是问题发生的地方)我遇到的每一个错误都有一个。第一个:“运算符 '+=' 不能应用于类型为“Button”和“lambda 表达式”的操作数第二个:“运算符‘+=’不能应用于“按钮”和“匿名表达式”类型的操作数(我试图将变量传递给的按钮单击事件)private void OkayButtonClicked(object sender, EventArgs e) {    PopupNavigation.Instance.PopAsync();    DisplayAlert("Attention", "You have successfully added Adviser to said List", "Okay"); }
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

你的构造函数FavoriteButtonPopupView可能看起来像这样


public FavoriteButtonPopupView(string selectedAdvisor)

{

  ...

}

selectedAdvisor您传递的变量是本地范围的- 这意味着它仅在构造函数中可见,并且该页面上的其他方法无法访问它。


您需要做的是创建一个类级别变量,该变量对该类的所有方法都可见。


private string SelectedAdvisor;


public FavoriteButtonPopupView(string selectedAdvisor)

{

  // store the parameter in a class level variable so other methods can access it

  SelectedAdvisor = selectedAdvisor;


  ...

}


private void OkayButtonClicked(object sender, EventArgs e) 

{


    // do something with SelectedAdvisor here


    PopupNavigation.Instance.PopAsync();


    DisplayAlert("Attention", "You have successfully added Adviser to said List", "Okay"); 

}

注意 - 这是基本的 C#,与 Xamarin 没有任何具体关系


查看完整回答
反对 回复 2023-07-09
?
长风秋雁

TA贡献1757条经验 获得超7个赞

您需要使用okayButton.Click =事件而不是okayButton += 。

你的代码应该是这样的

OKButton.Click += delegate(object sender, EventArgs e) { ..... };

在 C# 中,只能将+=事件委托一起使用。您不能将 += 运算符与按钮实例一起使用

希望这可以帮助


查看完整回答
反对 回复 2023-07-09
  • 2 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信