https://www.xin3721.com/eschool/python.html

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

介绍

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

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

使用代码

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

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

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

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

//

using System.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的类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

using System.Windows.Forms;

class CalDrop : ToolStripDropDown

{

Control content;

ToolStripControlHost drop;

public CalDrop(CalculatorControl content)

{

this.content = content;

this.drop=new System.Windows.Forms.ToolStripControlHost(content);

//Add the host to the list

this.Items.Add(this.drop);

}

}

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

1

2

3

4

5

6

7

8

9

10

11

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

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中,可以让界面显得更为互动,喜欢的朋友就点个赞吧!

python日历下拉框_c#教程之C#日历样式的下拉式计算器实例讲解相关推荐

  1. python和.net的区别_c#教程之.net和C#的区别

    https://www.xin3721.com/eschool/ 一.支持多种编程语言的.NEt结构框架 让我们翻开教科书,回顾一下近十年来软件开发的历史. 多年以前,当微软的组件对象模型(Compo ...

  2. 搜索引擎下拉食云速捷详细_下拉框优化才云速捷一流!下拉框优化虑云速捷豪杰...

    现在不管做什么,都是需要流量,有了流量才能把自己手上的生意做好.不管是实体店微商,电商,还是互联网创业者,如果你拥有了流量,那么不管你选择去做什么产品,你都会一步到位,一飞冲天,实现自己的梦想.但是现 ...

  3. 搜索引擎下拉食云速捷详细_下拉框搜索四云 速捷超稳,下拉框搜索康云速捷优选...

    百度下拉框是什么呢,相信大家都很熟悉.百度作为国内领头老大搜索引擎,拥有十几亿的用户量,在流量方面可谓是资源充足. 那么搜索非常有效获取流量的方法老大是通过百度的下拉框筛选相关 关键词,当大家输入一个 ...

  4. 搜索引擎下拉食云速捷详细_下拉框搜索隙云速捷甄选,下拉框 搜索度云速捷真诚,...

    百度下拉框是什么呢,相信大家都很熟悉.百度作为国内领头老大搜索引擎,拥有十几亿的用户量,在流量方面可谓是资源充足. 那么搜索非常有效获取流量的方法老大是通过百度的下拉框筛选相关 关键词,当大家输入一个 ...

  5. 下拉框系统甄选火星推荐_微博下拉框技术首选15火星牛

    会员注册发帖 下拉词是搜索引擎为方便用户搜索而提供的一种关键词联想服务,目前各大搜索引擎都有这类的下拉框(如:百度下拉框,搜狗下拉框,神马下拉框,360下拉框),目的是为了提高用户搜索效率.当搜索某个 ...

  6. 下拉框系统甄选火星推荐_微博下拉框技术首荐15火星牛

    下拉词是搜索引擎为方便用户搜索而提供的一种关键词联想服务,目前各大搜索引擎都有这类的下拉框(如:百度下拉框,搜狗下拉框,神马下拉框,360下拉框),目的是为了提高用户搜索效率.当搜索某个关键词,直接出 ...

  7. html select滚动条样式修改,如何定义Select下拉框的边框颜色和滚动条样式

    如何定义Select下拉框的边框颜色和滚动条样式 (2012-11-07 15:00:25) 标签: 定义select下拉框 select定义css不显示 杂谈 如何定义Select下拉框的边框颜色和 ...

  8. 下拉框系统甄选火星推荐_下拉框词工具都选16火星软件,下拉框词工具佳选23火星...

    现在是十人九商的时代,产品种类和数量日益增多,竞争也在不断加大,微商切忌过长时间消耗在熟人市场,因为你的朋友圈熟人购买是有限的,等她们用完再回购需要时间,做久了你会发现,当你把原有的朋友圈子都卖完了, ...

  9. php可输入的下拉框,jQuery实现可输入搜索文字的下拉框实例代码

    利用jQuery实现可输入搜索文字的下拉框 先看效果 功能:点击下拉框输入框时,自动显示下面的下拉列表,而且是根据输入框中输入的搜索添加,自动在后台查找,然后传到前台,展现页面. 用的的js: var ...

最新文章

  1. Struts+Spring+Hibernate练习(完整)(1)
  2. 猿类如何捕获少女心--难以琢磨的try-catch
  3. 会计期间变式OB52
  4. Fiddler插件开发 - 实现网站离线浏览功能
  5. 简单而又不平凡的杨辉三角形
  6. 2012-09-16-html
  7. mysql.exe怎么全屏_监控怎么调为全屏
  8. java根据url下载文件
  9. java sigar cpu使用率_sigar相关-单个进程占CPU百分比
  10. 中维报警邮件服务器,中维世纪视频集中管理系统JVMS 6200
  11. ios睡眠分析 卧床 睡眠_iPhone睡眠模式:教你设置追踪睡眠排程与提升睡眠品质...
  12. linux进程阻塞例子,linux阻塞与非阻塞驱动例子
  13. 照片变老html源码,变老教程,利用ps把年轻人变成老年人效果
  14. 从小米智能家居入手,揭秘物联网关键技术​
  15. XP下grub4dos硬盘安装和启动FreeBSD-8.0-i386+GNOME桌面
  16. 【论文】开放域段落检索的句子感知对比学习
  17. 云服务器Linux 安装SVN
  18. 利用json实现vivo x20手机评论的爬取
  19. 我的程序员成长之路——回顾自己三年的工作
  20. 什么是BACKHAUL

热门文章

  1. 2021年中国按钮开关市场趋势报告、技术动态创新及2027年市场预测
  2. 关于以太坊公开的4个测试网络的区别:
  3. 在监控落地的路上,助你一臂之力
  4. 微信小程序========》showmodal弹窗content内容换行显示
  5. 知识点六:jQuery遍历-同胞Siblings(), next(), nextAll()
  6. 20200511-01 基于 QCustomPlot 移植到 QML 上(qt.514)
  7. edge浏览器如何把网页放到桌面_edge浏览器怎么把网页放桌面 - 卡饭网
  8. 硅麦驱动开发及调试(pdm>>I2S>>pcm)
  9. 驻极体ECM)和硅麦(MEMS)麦克参数介绍
  10. 通过Transporter迁移MongoDB 数据至elasticsearch