最近在做winform开发中,遇到几个比较寄售的问题,通过上网查找计和自己琢磨,最终都圆满解决呢!

现在我将谈谈我在项目中遇到的问题集解决方案,以供大家参考!

一、就是我在使用键盘的keydown事件时,我上下移动键盘的方向键时,发现不仅控件没移动,反而控件所在的页面的滚动条随着方向键的上下移动而变化,我开始以为是选择的控件没有获得焦点才导致滚动条发生变化,但是我尝试强制给控件添加焦点,滚动条还是变化!后来我分析可能是给添加控件的键盘事件不对,可是键盘常用的事件就那几个,逐一尝试后,发现还是不能控制滚动条的位置。后来经过上网搜索,最后发现必须得重写键盘事件才行。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData){UctlBaseFineTuningMove(keyData);//return base.ProcessCmdKey(ref msg, keyData);
            UctlFormDesign_KeyDown(keyData);return true;//return true 取消控件焦点会跟着方向键改变}

默认的是返回这个 return base.ProcessCmdKey(ref msg, keyData);

发现返回true后,keydown事件无法正确执行,所以得得在返回true后重新这些事件

private void UctlFormDesign_KeyDown(Keys key){//switch(e.KeyCode)//{//    case Keys.Delete://        DeleteCtls();//        break;//    default:break;//} if (key == Keys.Delete){DeleteCtls();}else if (key == (Keys.Control | Keys.A))//全选
            {SelectAllCtl();}else if (key == (Keys.Control | Keys.S)){ArrangementTable();}else if (key == (Keys.Control | Keys.C))//复制
                SeleteCopy();else if (key == (Keys.Control | Keys.V))//粘贴
                Seletepaste();else if (key == (Keys.Control | Keys.X))//剪切
            {SelectCut();}}

二、还是与滚动条有关。
     具体的情形是这样的我在页面上添加了一个panel,设置pane的滚动条可见,然后再panel上绘制图形,可是当我发现绘制图形时没有问题,可是当我在panel的的最下面绘制图形时,这是图形的大小就会随着滚动条的移动变大。而且但我想将绘制的线条移动到顶部或是底部区域时,滚动条会随着一起移动,这样就会造成移动的图形就不能正确定位到所需的位置。后来经过查找,最后找到了一比较简单的处理方式。

就是重写panel,具体的步骤是这样的:首先重写panel

 public class HJYPanel : System.Windows.Forms.Panel{protected override Point ScrollToControl(Control activeControl){// return base.ScrollToControl(activeControl);return this.AutoScrollPosition;}}

其次就是原先在页面上直接拖panel,现在改为直接拖HJYPanel这个改写后的panel,然后其他的操作不变,这样就会拖动绘制的图形时,滚动条不会跟着移动!

转载于:https://www.cnblogs.com/xiaolifeidao/p/3155274.html

winform中关于panel中滚动条和键盘事件几点体会相关推荐

  1. javaFx中fxml的键盘事件

    写了一个桌面程序,在登录框中的fxml犯了一个错,记录一下. 在fxml的布局AnchorPane中 加了onKeyPressed="#login_Enter"  接收键盘事件 在 ...

  2. python+webdriver学习鼠标键盘事件以及定位元素

    设置浏览器大小:像素点 set_window_size(width,height) maximize_window() 浏览器全屏显示,不带参数 控制浏览器前进.后退: driver.forward( ...

  3. 基于OpenGL编写一个简易的2D渲染框架-07 鼠标事件和键盘事件

    这次为程序添加鼠标事件和键盘事件 当检测到鼠标事件和键盘事件的信息时,捕获其信息并将信息传送到需要信息的对象处理.为此,需要一个可以分派信息的对象,这个对象能够正确的把信息交到正确的对象. 实现思路: ...

  4. C++/C--Windows下获取键盘事件

    在Visual Studio 2013中可以使用_kbhit()函数来获取键盘事件,使用时需要加入conio.h头文件,例: #include <conio.h> #include < ...

  5. Element ui 组件中用键盘事件

    //这是表单 <el-form:model="ruleForm"status-icon:rules="rules"ref="ruleForm&q ...

  6. Selenium 键盘事件 操作大全

    今天你学习了吗? 一.导入键盘事件 1.导入语句 想使用selenium中的键盘事件,首先我们必须导入Keys包,需要注意的是包名称Keys首字母需要大写.Keys类中提供了几乎所有的键盘事件包括组合 ...

  7. swing键盘事件(KeyEvent)监听器

    当一个组件处于激活状态时,按下.释放或敲击键盘上的某个键时就会发生键盘事件.通过KeyListener接口实现,KeyListener接口有3个方法: keyPressed(KeyEvent e):键 ...

  8. C/C++获取键盘事件

    在vs中可以使用_kbhit()函数来获取键盘事件,使用时需要加入conio.h头文件,例: #include <conio.h> #include <iostream>usi ...

  9. Winform 中panel的mousewheel鼠标滚轮事件触发

    如果将窗体或容器控件(如Panel控件)的AutoScroll属性设置为True时,那么当窗体或Panel容不下其中的子控件时就会出现 滚动条,通过移动滚动条可以上下显示出窗体或Panel中的全部内容 ...

最新文章

  1. vb初学者编程代码大全_学习VB编程第14天,一个简单的排序代码把我难住了
  2. git merge --squash改写提交
  3. 3、Spring配置类
  4. 技术员联盟win11系统64位专业版镜像v2021.08
  5. hdu 2873 Bomb Game 博弈论
  6. 编程语言_JavaScript_面试题005
  7. 程序员 45 岁怎么了?!
  8. 关于移动安全的一点总结
  9. 使用T-SQL语句创建数据库
  10. 直线段的矢栅转换算法(DDA算法、中心画线算法、Bresenham算法)
  11. 马上谈薪了,五险一金你还不知道?作为毕业生,钱不能白交!!!
  12. Python最吃香的5个就业方向,薪资收入也非常可观!
  13. 信息系统与信息化、信息系统开发方法、常规信息系统集成技术
  14. 启用了被称为 HTTP 严格传输安全(HSTS)的安全策略,Firefox 只能与其建立安全连接
  15. android 通话录音
  16. 一文带你读懂何为 macOS App 公证,以及如何自动化实现
  17. Python学习(六)——格式化输出
  18. uniapp使用map地图组件
  19. 刷新主板BIOS的几种方法
  20. Toodledo slim 与 Chrome

热门文章

  1. 动作游戏老是卡?试试从这些方面提升流畅度
  2. mysql模糊查询(详细的解析与例句)-建议收藏
  3. jsonp的原理·jsonp是不是ajax中实现跨域访问的技术
  4. oracle 物理读,逻辑读的理解
  5. [转]怎样看懂Oracle的执行计划
  6. 你可能不知道的小知识-bug为什么叫bug
  7. angularjs的一点总结
  8. 人人网SDK Demo项目学习获取系统Log类
  9. 数据结构趣题——顺序表就地逆置
  10. matlab都有什么接口,介绍MATLAB与C++的几种接口方式