Reputation:
I am C# developer working on a simple calculator in xamarin.studio for android my code is
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;
};
i am getting error in buttonclick(); and operationbuttonclick(); line 2 and 4 of above code. my buttonclickmethod and operationbuttonclick methods are
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);
}
and
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 ();
}
In visual studio it can easily be done by going event handler of button and set the method in onclick event how to do it in xamarin. I've googled for this and can't find any appropriate solution. any help will be appreciated.
Upvotes: 8
Views: 30995
Reputation: 16230
You might enjoy typing a lot, but here's the short version. Nothing new, it works since .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;
};
Upvotes: 6
Reputation: 1999
You can use event handler in place of delegates , try this
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;
};
and remaining code same.
Upvotes: 7