我是C#开发人员,在xamarin.studio中使用简单的计算器,我的代码是
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行.我的buttonclick方法和operationbuttonclick方法是
private void Buttonclick(object sender,EventArgs e) { EditText txt2 = FindViewById(Resource.Id.textView1); EditText txt1 = FindViewById (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(Resource.Id.textView1); EditText txt1 = FindViewById (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中,可以通过按钮的事件处理程序轻松完成,并在onclick事件中设置方法如何在xamarin中执行.我已经google了这个,找不到任何合适的解决方案.任何帮助将不胜感激.
你可能喜欢打字很多,但这里是短版.没有什么新东西,它可以用于.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;
};
您可以使用事件处理程序代替委托,试试这个
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; };
和剩下的代码相同.