运用wpf技术,模仿windows 10系统中计算机器(calculator)程序,开发一个类似程序。
注:
- ms:记忆当前显示的数字(memory save)
- mc:清除记忆的数字(memory clean)
- mr:显示记忆的数字(memory recall)
- m-:记忆的数字减去当前数字,并保存
- m :记忆的数字加上当前数字,并保存
创建wpf应用
ui设计
metro风格来美化:https://www.cnblogs.com/ouyangkai/p/12759466.html
app.xaml
mainwindow.xaml
逻辑设计
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.windows;
using system.windows.controls;
using system.windows.data;
using system.windows.documents;
using system.windows.input;
using system.windows.media;
using system.windows.media.imaging;
using system.windows.navigation;
using system.windows.shapes;
using mahapps.metro.controls;
using system.windows.controls.primitives;namespace homework19
{///
/// mainwindow.xaml 的交互逻辑/// public partial class mainwindow : metrowindow{public mainwindow(){initializecomponent();b_mc.isenabled = false;b_m__1.isenabled = false;b_m__.isenabled = false;b_mr.isenabled = false;}//temp用于临时存储操作数,oper存储最近一次的运算符private double temp, op1, op2, memory, result;private string history=null,oper = null;//next用来表示是否要输入新的操作数private bool next;//连续计算时先计算前面的结果private void aut(){op2 = convert.todouble(out_1.text);switch (oper){case " ":result = op1 op2;break;case "-":result = op1 - op2;break;case "×":result = op1 * op2;break;case "÷":result = op1 / op2;break;default:break;}out_1.text = convert.tostring(result);//out_2.text = convert.tostring(result);}private void button_click(object sender, routedeventargs e){//目标this.contextmenu.placementtarget = this.btnmenu;//位置this.contextmenu.placement = placementmode.top;//显示菜单this.contextmenu.isopen = true;}private void b_num_click(object sender, routedeventargs e){button numbtn = sender as button;string numstr = numbtn.content.tostring();if (numstr != "0"){if (out_1.text == "0" || next){out_1.text = numstr;if (next){next = false;}}elseout_1.text = numstr;}else {if (out_1.text != "0"){out_1.text = "0";}if (next){out_1.text = "0";next = false;}}}private void b_c_click(object sender, routedeventargs e){out_1.text = "0";out_2.text = "";oper = null;}private void b_ce_click(object sender, routedeventargs e){out_1.text = "0";out_2.text = "";oper = null;}private void operater_button_click(object sender, routedeventargs e){button operaterbtn = sender as button;string operater = operaterbtn.content.tostring();out_2.text = out_1.text operater;if (oper != null){aut();}op1 = convert.todouble(out_1.text);oper = operater;next = true;}private void b_delete_click(object sender, routedeventargs e){if (!next){if (out_1.text.length == 1){out_1.text = "0";}else{out_1.text = out_1.text.substring(0, out_1.text.length - 1);}}}private void b_reciprocal_click(object sender, routedeventargs e){try{temp = convert.todouble(out_1.text);temp = 1 / temp;out_1.text = convert.tostring(temp);}catch (exception ee){out_1.text = "除数不能为0";}}private void b_sq_click(object sender, routedeventargs e){temp = convert.todouble(out_1.text);temp = math.pow(temp, 2);out_1.text = convert.tostring(temp);}private void b_cu_click(object sender, routedeventargs e){temp = convert.todouble(out_1.text);temp = math.pow(temp, 3);out_1.text = convert.tostring(temp);}private void b_radical_click(object sender, routedeventargs e){temp = convert.todouble(out_1.text);temp = math.pow(temp, 0.5);out_1.text = convert.tostring(temp);}private void b_per_click(object sender, routedeventargs e){temp = convert.todouble(out_1.text);temp = temp / 100;out_1.text = convert.tostring(temp);}private void b_mr_click(object sender, routedeventargs e){out_1.text = convert.tostring(memory);}private void b_m__1_click(object sender, routedeventargs e){memory = convert.todouble(out_1.text);}private void b_m___click(object sender, routedeventargs e){memory -= convert.todouble(out_1.text);}private void b_mc_click(object sender, routedeventargs e){memory = 0;b_mc.isenabled = false;b_m__1.isenabled = false;b_m__.isenabled = false;b_mr.isenabled = false;}private void b_ms_click(object sender, routedeventargs e){memory = convert.todouble(out_1.text);b_mc.isenabled = true;b_m__1.isenabled = true;b_m__.isenabled = true;b_mr.isenabled = true;}private void clear_btn_click(object sender, routedeventargs e){historypanel.children.clear();}private void b_eq_click(object sender, routedeventargs e){op2 = convert.todouble(out_1.text);switch (oper){case " ":result = op1 op2;break;case "-":result = op1 - op2;break;case "×":result = op1 * op2;break;case "÷":result = op1 / op2;break;default:break;}oper = null;history = out_2.text out_1.text "=";out_1.text = convert.tostring(result);out_2.text = "";add_history(history, convert.tostring(result));}private void b_opp_click(object sender, routedeventargs e){temp = convert.todouble(out_1.text);if (temp != 0){temp = 0 - temp;}out_1.text = convert.tostring(temp);}private void button_click_1(object sender, routedeventargs e){out_1.text = ".";}private void add_history(string cal, string result){border border = new border();border.cornerradius = new cornerradius(5);border.background = new solidcolorbrush(colors.white);border.borderbrush = new solidcolorbrush(colors.lightgray);border.borderthickness = new thickness(1);border.height = 100;grid gird = new grid();textblock textblock1 = new textblock();textblock1.horizontalalignment = horizontalalignment.left; textblock1.margin = new thickness(10, 10, 0, 0); textblock1.textwrapping = textwrapping.wrap;textblock1.text = cal;textblock1.verticalalignment = verticalalignment .top;textblock1.width = 260;textblock1.height = 28;textblock1.textalignment = textalignment.right;textblock1.fontsize = 24;textblock textblock2 = new textblock();textblock2.horizontalalignment = horizontalalignment.left;textblock2.margin = new thickness(10, 30, 0, 0);textblock2.textwrapping = textwrapping.wrap;textblock2.text = result;textblock2.verticalalignment = verticalalignment.top;textblock2.width = 260;textblock2.height = 64;textblock2.textalignment = textalignment.right;textblock2.fontsize = 54;textblock2.fontfamily = new fontfamily("microsoft yahei");gird.children.add(textblock1);gird.children.add(textblock2);border.child = gird;historypanel.children.add(border);}}
}
windows 10 计算器 c 源代码
https://github.com/microsoft/calculator
仿windows 10 计算器 c#源代码
https://github.com/buxianshan/calculator
https://blog.csdn.net/weixin_43272781/article/details/106750837
https://blog.csdn.net/qq_43479622/article/details/91599602
https://blog.csdn.net/oneword233/article/details/80755284
https://www.cnblogs.com/lonelyxmas/p/12117453.html
https://blog.csdn.net/weixin_42009898/article/details/80921151
https://www.cnblogs.com/ouyangkai/p/12759466.html
总结
以上是凯发ag旗舰厅登录网址下载为你收集整理的c#——简单的计算器(仿windows 10计算器)的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。