WinForm数字小键盘/WPF数字小键盘
模仿原本的WinForm触摸屏小键盘制作WPF触摸屏小键盘
原WinForm触摸屏小键盘样式(WinForm采用Krypton系列控件)如下图:
Designer代码如下:
- //
- // BtnNum1
- //
- this.BtnNum1.Dock = System.Windows.Forms.DockStyle.Fill;
- , );
- this.BtnNum1.Name = "BtnNum1";
- , );
- )));
- )));
- ;
- ";
- this.BtnNum1.Click += new System.EventHandler(this.BtnNum_Click);
- //
- // BtnNum2
- //
- this.BtnNum2.Dock = System.Windows.Forms.DockStyle.Fill;
- , );
- this.BtnNum2.Name = "BtnNum2";
- , );
- )));
- )));
- ;
- ";
- this.BtnNum2.Click += new System.EventHandler(this.BtnNum_Click);
- //
- // BtnNum3
- //
- this.BtnNum3.Dock = System.Windows.Forms.DockStyle.Fill;
- , );
- this.BtnNum3.Name = "BtnNum3";
- , );
- )));
- )));
- ;
- ";
- this.BtnNum3.Click += new System.EventHandler(this.BtnNum_Click);
- //
- // BtnNum4
- //
- this.BtnNum4.Dock = System.Windows.Forms.DockStyle.Fill;
- , );
- this.BtnNum4.Name = "BtnNum4";
- , );
- )));
- )));
- ;
- ";
- this.BtnNum4.Click += new System.EventHandler(this.BtnNum_Click);
- //
- // BtnNum5
- //
- this.BtnNum5.Dock = System.Windows.Forms.DockStyle.Fill;
- , );
- this.BtnNum5.Name = "BtnNum5";
- , );
- )));
- )));
- ;
- ";
- this.BtnNum5.Click += new System.EventHandler(this.BtnNum_Click);
- //
- // BtnNum6
- //
- this.BtnNum6.Dock = System.Windows.Forms.DockStyle.Fill;
- , );
- this.BtnNum6.Name = "BtnNum6";
- , );
- )));
- )));
- ;
- ";
- this.BtnNum6.Click += new System.EventHandler(this.BtnNum_Click);
- //
- // BtnNum7
- //
- this.BtnNum7.Dock = System.Windows.Forms.DockStyle.Fill;
- , );
- this.BtnNum7.Name = "BtnNum7";
- , );
- )));
- )));
- ;
- ";
- this.BtnNum7.Click += new System.EventHandler(this.BtnNum_Click);
- //
- // BtnNum8
- //
- this.BtnNum8.Dock = System.Windows.Forms.DockStyle.Fill;
- , );
- this.BtnNum8.Name = "BtnNum8";
- , );
- )));
- )));
- ;
- ";
- this.BtnNum8.Click += new System.EventHandler(this.BtnNum_Click);
- //
- // BtnNum9
- //
- this.BtnNum9.Dock = System.Windows.Forms.DockStyle.Fill;
- , );
- this.BtnNum9.Name = "BtnNum9";
- , );
- )));
- )));
- ;
- ";
- this.BtnNum9.Click += new System.EventHandler(this.BtnNum_Click);
- //
- // BtnNum0
- //
- );
- this.BtnNum0.Dock = System.Windows.Forms.DockStyle.Fill;
- , );
- this.BtnNum0.Name = "BtnNum0";
- , );
- )));
- )));
- ;
- ";
- this.BtnNum0.Click += new System.EventHandler(this.BtnNum_Click);
- //
- // BtnNumDel
- //
- this.BtnNumDel.Dock = System.Windows.Forms.DockStyle.Fill;
- , );
- this.BtnNumDel.Name = "BtnNumDel";
- , );
- )));
- )));
- ;
- this.BtnNumDel.Values.Text = "Del";
- this.BtnNumDel.Click += new System.EventHandler(this.BtnNumDel_Click);
所有按钮的点击事件为BtnNumDel_Click,功能实现的代码如下:
- #region 小键盘按钮事件
- /// <summary>
- /// 触摸小键盘
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void BtnNum_Click(object sender, EventArgs e)
- {
- KryptonButton btn = (KryptonButton)sender;
- try
- {
- CurrentTextEdit.Text += btn.Text;
- }
- catch
- {
- }
- }
- /// <summary>
- /// 进入控件发生事件
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void textEdit_Enter(object sender, EventArgs e)
- {
- CurrentTextEdit = (KryptonTextBox)sender;
- }
- /// <summary>
- /// Del按钮
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void BtnNumDel_Click(object sender, EventArgs e)
- {
- CurrentTextEdit.Text = string.Empty;
- }
- #endregion
对于简易的小键盘来说,个人觉得这么写还算简洁。只要把想输入的TextBox的Enter事件设置为textEdit_Enter即可实现输入。
由于WPF初学,所以没有想到更简单的方法,而且WPF与WinForm很相似,所以仿照着写了一个。
XAML代码如下:
- <Button Content="1" Style="{DynamicResource BtnS1}" FontFamily="KaiTi_GB2312" FontWeight="Bold" FontSize="29.333" Margin="5" Click="BtnKeyBoard_Click"/>
- <Button Content="2" Style="{DynamicResource BtnS1}" FontFamily="KaiTi_GB2312" FontWeight="Bold" FontSize="29.333" Grid.Column="1" Margin="5" Click="BtnKeyBoard_Click"/>
- <Button Content="3" Style="{DynamicResource BtnS1}" FontFamily="KaiTi_GB2312" FontWeight="Bold" FontSize="29.333" Grid.Column="2" Margin="5" Click="BtnKeyBoard_Click"/>
- <Button Content="4" Style="{DynamicResource BtnS1}" FontFamily="KaiTi_GB2312" FontWeight="Bold" FontSize="29.333" Grid.Row="1" Margin="5" Click="BtnKeyBoard_Click"/>
- <Button Content="5" Style="{DynamicResource BtnS1}" FontFamily="KaiTi_GB2312" FontWeight="Bold" FontSize="29.333" Grid.Column="1" Grid.Row="1" Margin="5" Click="BtnKeyBoard_Click"/>
- <Button Content="6" Style="{DynamicResource BtnS1}" FontFamily="KaiTi_GB2312" FontWeight="Bold" FontSize="29.333" Grid.Column="2" Grid.Row="1" Margin="5" Click="BtnKeyBoard_Click"/>
- <Button Content="7" Style="{DynamicResource BtnS1}" FontFamily="KaiTi_GB2312" FontWeight="Bold" FontSize="29.333" Grid.Row="2" Margin="5" Click="BtnKeyBoard_Click"/>
- <Button Content="8" Style="{DynamicResource BtnS1}" FontFamily="KaiTi_GB2312" FontWeight="Bold" FontSize="29.333" Grid.Column="1" Grid.Row="2" Margin="5" Click="BtnKeyBoard_Click"/>
- <Button Content="9" Style="{DynamicResource BtnS1}" FontFamily="KaiTi_GB2312" FontWeight="Bold" FontSize="29.333" Grid.Column="2" Grid.Row="2" Margin="5" Click="BtnKeyBoard_Click"/>
- <Button Content="0" Style="{DynamicResource BtnS1}" FontFamily="KaiTi_GB2312" FontWeight="Bold" FontSize="29.333" Grid.Row="3" Grid.ColumnSpan="2" Margin="5" Click="BtnKeyBoard_Click"/>
- <Button Content="DEL" Style="{DynamicResource BtnS1}" FontFamily="KaiTi_GB2312" FontWeight="Bold" FontSize="29.333" Grid.Column="2" Grid.Row="3" Margin="5" Click="Del_Click"/>
这里WPF略有不同的是,TextBox并没有Enter事件,尝试多次使用GotFocus事件代替,代码如下:
- #region 小键盘事件
- /// <summary>
- /// 触摸小键盘
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void BtnKeyBoard_Click(object sender, RoutedEventArgs e)
- {
- ///获取父类中的Btn
- Button btn = (Button)e.OriginalSource;
- if (pickbox == true)
- {
- try
- {
- TextBoxEdit.Text += btn.Content;
- }
- catch
- {
- }
- }
- else if (pickbox == false)
- {
- try
- {
- PasswordBoxEdit.Password += btn.Content;
- }
- catch
- {
- }
- }
- }
- /// <summary>
- /// 删除输入
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void Del_Click(object sender, EventArgs e)
- {
- if (pickbox == true)
- {
- TextBoxEdit.Text = string.Empty;
- }
- else if (pickbox == false)
- {
- PasswordBoxEdit.Password =string.Empty;
- }
- }
- /// <summary>
- /// 用户编号Focus
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void TextBoxEdit_Focus(object sender, EventArgs e)
- {
- TextBoxEdit = (TextBox)sender;
- pickbox = true;
- }
- /// <summary>
- /// 用户密码Focus
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void PasswordBoxEdit_Focus(object sender, EventArgs e)
- {
- PasswordBoxEdit = (PasswordBox)sender;
- pickbox = false;
- }
- #endregion
而且WPF的TextBox控件与PasswordBox控件不同,无奈之下还加了一个变量pickbox用来区分。
WinForm数字小键盘/WPF数字小键盘的更多相关文章
- 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])
常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill 逆天博客:http://dnt.dkil.net 逆天通用水印扩展篇~新增剪贴板系列 ...
- WinForm 与WPF 窗体之间的想到调用
先放置一个容器控件,并设计 好WinForm(或WPF)窗口 winform 调用 wpf ElementHost el = new ElementHost(); el.Dock = DockStyl ...
- 基于Winform、WPF等的客户端文件下载
有时候,我们用C#写一些客户端应用程序需要从服务器下载一些资源,如图片.dll.配置文件等.下面就来说一下,在Winform及WPF中如何下载文件. 我们的资源大多放在自己的网站上,或者从其他网站下载 ...
- 如何去掉WinForm或者WPF的最大化和最小化按钮
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何去掉WinForm或者WPF的最大化和最小化按钮.
- winform,wpf全屏 还显示任务栏的解决方法
原文:winform,wpf全屏 还显示任务栏的解决方法 以wpf为例: 全屏代码: this.Topmost = true; this.WindowStyle = System.Windows.Wi ...
- WinForm、wpf、silverlight三者关系
最近在学C#.NET,基本语法学习的差不多了,接下来准备学习图形界面设计部分.但是我目前对于.NET的WinForm.wpf.silverlight这三者的关系弄的不是很清楚,一般书中很少介绍wpf和 ...
- 对比MFC和Winform及WPF
MFC 生成本机代码,自然是很快.可是,消息循环,减缓了界面显示速度.winform 封装了 win32 的api,多次进行P/invoke 操作 (大部分使用p/invoke操作封装),速度慢 .w ...
- windows 10 透明毛玻璃,winform和wpf方法
win10的透明毛玻璃,winform和wpf方法,win7.8不能用,只是win10 public partial class Form1 : Form { [DllImport("use ...
- 【Win32 API】利用SendMessage实现winform与wpf之间的消息传递
原文:[Win32 API]利用SendMessage实现winform与wpf之间的消息传递 引言 有一次心血来潮,突然想研究一下进程间的通信,能够实现消息传递的方法有几种,其中win32ap ...
随机推荐
- PAT天梯赛练习题 L2-013 红色警报(并查集+逆序加边)
L2-013. 红色警报 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 战争中保持各个城市间的连通性非常重要.本题要求你编写一 ...
- CSS兼容性(IE和Firefox)技巧大全
CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理技巧并整理了一下.对于web2.0的过度,请尽量用xhtml格 ...
- java数组排序问题:array.sort()是从小到大排序,那么如何从大到小排序?
别告诉我从i=a.length开始打印然后i--!因为数组没变啊,只是打印顺序变了.有木有啥别的方法,除了冒泡插入选择.. nteger [] array=new Integer[]{1,2,3,4, ...
- js获取时间(本周、本季度、本月..)
/** * 获取本周.本季度.本月.上月的开端日期.停止日期 */ var now = new Date(); //当前日期 var nowDayOfWeek = now.getDay(); //今天 ...
- laravel url() 和 asset() 的区别
asset()方法用于引入 CSS/JavaScript/images 等文件,文件必须存放在public文件目录下.url()方法生成一个完整的网址.
- Tortoise SVN 更换用户
由于之前没有找到 svn 的安装路径,所以用了同事的 svn 账号,今天找到了并且添加了用户,所以 tortoise svn 要更换用户: ① ② ③ 需要清除的 svn 账号打上勾 参考:svn怎么 ...
- Javascript 笔记与总结(1-1)作用域
以语言的角度学习 Js 的底层原理(与 DOM 无关):① 作用域链 ② 词法分析 ③ 闭包 ④ 面向对象(原型链) ① 作用域链 例1 <script> var c = 5; funct ...
- mobile cpu上禁用alpha test的相关总结
因为,每家芯片的特性不同,根据向framebuffer写法的不同,分为tile-based的mobile cpu,如ImgTec PowerVR,ARM Mali,一部分老版本Qualcomm ...
- [ZZ]计算机视觉、机器学习相关领域论文和源代码大集合
原文地址:[ZZ]计算机视觉.机器学习相关领域论文和源代码大集合作者:计算机视觉与模式 注:下面有project网站的大部分都有paper和相应的code.Code一般是C/C++或者Matlab代码 ...
- C++类型转化分析(1)
仔细想想地位卑贱的类型转换功能(cast),其在程序设计中的地位就象goto语句一样令人鄙视.但是它还不是无法令人忍受,因为当在某些紧要的关头,类型转换还是必需的,这时它是一个必需品. 不过C风格的类 ...