C#日历样式的下拉式计算器实例讲解

C#日历样式的下拉式计算器实例讲解,第1张

概述本文介绍了如何在VisualStudio中创建用户控件来显示下拉计算器,d出效果类似于日历控件。

本文介绍了如何在Visual Studio中创建用户控件来显示下拉式计算器,d出效果类似于日历控件。

介绍

如果我们正在做一个类似于库存控制和计费系统的项目,有些部分可能必须手动计算数值。因此,用户就不得不使用计算器得到结果,再填入到输入字段中,或者在工作窗口上单独打开一个计算器窗口。总之,各种不便和麻烦。

这篇文章主要描述的是如何添加下拉式计算器到DataGrIDVIEw单元格中,如下图:

使用代码

第一步,我们必须先创建一个函数计算器,并且能够使用控件。因此,不妨先创建一个Visual Studio用户自定义控件。怎么做呢?打开VS,创建一个新的windows窗体应用程序(甚至你也可以在你当前的项目中这么做,但最好能分开,然后结合)。

然后,在Solution Explorer中,右键单击项目,选择add->User Control。命名(这里使用“CalculatorControl”),并添加。这时会给你一个像工作空间一样的windows窗体。在它上面,用控件工具箱中的TextBox和button创建一个计算器的布局。布局越小越好(想想日历控件),因为这就是个计算器而已。

为了快速搞定计算器功能,可以点击这里下载NCal(确保下载二进制文件),并添加到项目的引用文件中。

实现每个数字按钮的点击事件,将对应的数字输入/(追加)到文本框中,然后用同样的方式实现其他按钮,如+,X,/…并把对应的符号输入/(追加)到文本框中…

例如在文本框中输入:2 * 3 + 4

然后使用下面的代码来验证表达式,并得到结果:

// using Sy@R_502_6563@.windows.Forms; using ncalc; //   string resText;   bool eqpressed;   double result;  public voID btnEqual_Click(object sender,EventArgs e)     {       Expression ex = new Expression(textBox1.Text);       if (ex.HasErrors())       {         //InvalID Expression       }       else       {         result = Convert.Todouble(ex.Evaluate());         resText = result.ToString();       }       textBox1.Text = resText;       text = resText;       eqpressed = true;      } // 

现在计算器功能已经完成。直接构建解决方案,那么你可能会发现用户控件显示在工具箱顶部。你可以添加windows窗体,拖放用户控件到窗体中运行,看看能否正常工作。

然后,在你想要添加下拉式计算器的项目中,创建另一个只有一个小按钮的用户控件。这个按钮将被用于打开计算器。

添加CalculatorControl内置引用文件到项目中。

创建一个新的继承toolstripdropdown的类:

using Sy@R_502_6563@.windows.Forms;  class CalDrop : toolstripdropdown   {    Control content;    ToolStripControlHost drop;  public CalDrop(CalculatorControl content)     {        this.content = content;        this.drop= new Sy@R_502_6563@.windows.Forms.ToolStripControlHost(content);        //Add the host to the List       this.Items.Add(this.drop);     } } 

在按钮的单击事件中添加以下代码:

private voID button1_Click(object sender,EventArgs e)     {       CalculatorControl calculator = new CalculatorControl();       CalDrop cal = new CalDrop(calculator);        Point controlLoc = fm.PointToScreen(button1.Location);       Point relativeLoc = new Point(controlLoc.X + button1.WIDth + 100,controlLoc.Y + button1.Height * 2);       Rectangle calRect = button1.displayRectangle;       cal.Show(locPoint);     } 

添加控件到DataGrIDVIEwCell

在你构建解决方案时,新的按钮控件会出现在工具箱中。添加以下代码到项目的窗体类中。

private CalculatorPick calculator;  public form1() {       calculator = new CalculatorPick();        calculator.Visible = false;       dataGrIDVIEw2.Controls.Add(calculator); }  private voID dataGrIDVIEw2_CellClick(object sender,DataGrIDVIEwCellEventArgs e) {         if (e.ColumnIndex == clmCommision.Index)         {           Rectangle calRect = dataGrIDVIEw2.GetCelldisplayRectangle    (e.ColumnIndex,e.RowIndex,false);                     Point p = calculator.FindForm().PointToClIEnt   (calculator.Parent.PointToScreen(calculator.Location));           p.X -= calculator.WIDth/3;           p.Y += calculator.Height;           calculator.LocPoint = p;            calculator.WIDth = calRect.WIDth/3;           calculator.Height = calRect.Height;            calculator.Visible = true;           calculator.Calculator.btnEqual.Click += new EventHandler(calculatorBtnEqlClicked);         }         else           if(calculator!=null)           calculator.Visible = false; }  voID calculatorBtnEqlClicked(object sender,EventArgs e) {            dataGrIDVIEw2.CurrentCell.Value = calculator.Calculator.Result.ToString();      } 

本技巧描述的是添加控件到DataGrIDVIEw中,可以让界面显得更为互动,喜欢的朋友就点个赞吧!

总结

以上是内存溢出为你收集整理的C#日历样式的下拉式计算器实例讲解全部内容,希望文章能够帮你解决C#日历样式的下拉式计算器实例讲解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1254740.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存