我是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<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中,可以通过按钮的事件处理程序轻松完成,并在onclick事件中设置方法如何在xamarin中执行。我已经google了这个,找不到任何合适的解决方案。任何帮助将不胜感激。
答案 0 :(得分:7)
您可以使用事件处理程序代替委托,试试这个
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;
};
,其余代码相同。
答案 1 :(得分:6)
你可能喜欢打字很多,但这里是短版。没有什么新东西,它可以用于.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;
};