如何在xamarin.studio中的onclick事件中调用函数

我是C#开发人员工作在一个简单的计算器在Xamarin.studio为Android我的代码是

btn9.Click += delegate { Buttonclick(); }; btnadd.Click += delegate { operationbuttonclick (); }; btnsub.Click += delegate { operationbuttonclick (); }; btndiv.Click += delegate { operationbuttonclick (); }; btnmul.Click += delegate { operationbuttonclick (); }; btneql.Click += delegate { txt1.Text=result.ToString(); isfirst=true; hasdecimal=true; shouldclear=true; }; btnCE.Click += delegate { txt1.Text="0"; result=0; isfirst=true; shouldclear=true; hasdecimal=false; }; 

我得到错误buttonclick(); 和operationbuttonclick(); 上面代码的第2行和第4行。 我的buttonclickmethod和operationbuttonclick方法是

 private void Buttonclick(object sender,EventArgs e) { EditText txt2 = FindViewById<EditText> (Resource.Id.textView1); EditText txt1 = FindViewById<EditText> (Resource.Id.textView2); Button sbutton = (sender as Button); double oldno, newno,buttonno; if(shouldclear) { txt1.Text=""; oldno=0; shouldclear=false; } else { oldno=double.Parse(txt1.Text); hasdecimal = true; } buttonno=double.Parse(sbutton.Text); newno = (oldno * 10) + buttonno; if(isfirst) { num1=newno; } else { num2=newno; } txt1.Text += sbutton.Text; Calculate (symbol); } 

 private void operationbuttonclick(object sender,EventArgs e) { EditText txt2 = FindViewById<EditText> (Resource.Id.textView1); EditText txt1 = FindViewById<EditText> (Resource.Id.textView2); num1 = result; Button sourcebutton=(sender as Button); string operatorsymbol = sourcebutton.Text; if (isfirst) isfirst = false; hasdecimal = true; symbol = operatorsymbol; txt1.Text = result.ToString (); } 

在visual studio中,可以轻松地通过button的事件处理程序来完成,并在onclick事件中设置方法如何在xamarin中完成。 我已经为此search,找不到任何合适的解决scheme。 任何帮助将不胜感激。

Solutions Collecting From Web of "如何在xamarin.studio中的onclick事件中调用函数"

您可以使用事件处理程序代替代表,试试这个

 btn9.Click += (object sender, EventArgs e) => { Buttonclick (sender, e); }; btnadd.Click += (object sender, EventArgs e) => { operationbuttonclick (sender, e); }; btnmul.Click += (object sender, EventArgs e) => { operationbuttonclick (sender, e); }; btnsub.Click += (object sender, EventArgs e) => { operationbuttonclick (sender, e); }; btndiv.Click += (object sender, EventArgs e) => { operationbuttonclick (sender, e); }; btneql.Click += delegate { txt1.Text=result.ToString(); isfirst=true; hasdecimal=true; shouldclear=true; }; btnCE.Click += delegate { txt1.Text="0"; result=0; isfirst=true; shouldclear=true; hasdecimal=false; }; 

和其余的代码相同。

您可能喜欢打字,但是这里是简短的版本。 没有新的东西,它自.NET2.0 iirc起作用

 btn9.Click += Buttonclick; btnadd.Click += operationbuttonclick; btnsub.Click += operationbuttonclick; btndiv.Click += operationbuttonclick; btnmul.Click += operationbuttonclick; btneql.Click += (o,e) => { txt1.Text=result.ToString(); isfirst=true; hasdecimal=true; shouldclear=true; }; btnCE.Click += (o,e) => { txt1.Text="0"; result=0; isfirst=true; shouldclear=true; hasdecimal=false; };