笔记3-从毕业生到程序员:使用c#开发商业软件

  • c#命名空间

当程序文件非常多时,可以使用文件夹以树状的结构组织和管理程序文件。

对于c#工程,文件夹还会影响源代码的默认的命名空间。在项目的子文件夹下新增程序源代码文件,则源代码的命名空间就是”项目默认命名空间.子文件夹名“,

而且子文件夹中的资源文件在编译后的程序集中的资源名称也是”项目默认命名空间.子文件夹名.资源文件名“。

注意:在修改文件夹的名称后,该文件夹下的源码并不会自动更新其命名空间,但此后新增的源代码中的命名空间包含了新的文件夹名称。

  • 窗体文件的主要属性

窗体文件指的定义窗体的文件,其文件属性的内涵如下图2所示。通过点击解决方案资源管理器(如图1)下的某个窗体文件,则可以显示相应的文件属性(如图2)。这与点击设计器中窗体界面的效果是不一样的。即窗体属性和窗体文件的属性是不一样的。

image                               image

图1                                                                         图2

 

winform窗体文件的主要性质

------------------------------------------------分割线-------------------------------------------------------

Combobox控件属性(simple下的列表是默认展开的)

image

  • 用户界面事件处理

  • 鼠标事件

在c#窗体软件开发中,通过绑定控件的MouseDown事件或重写OnMouseDown方法来处理鼠标按下事件。

MouseMove事件   OnMouseMove方法   鼠标移动事件

MouseUp事件    OnMouseUp方法   松开事件

MouseWheel事件  OnMouseWheel方法   鼠标滚轮事件

  • 键盘事件

KeyDown(Up)事件   OnkeyDown(Up)方法   键盘按键按下(松开)事件

绑定事件的KeyPress事件或重写OnKeyPress方法来处理键盘字符事件

~~~~~~~~KeyDown事件和KeyPress事件的区别~~~~~~~~~~~~~~

用户按下的任何按键都会触发KeyDown事件,包括字符键、功能键、光标键等,该事件 的参数是按键的编码。

用户只有按下字符键才会触发KeyPress事件,该事件的参数是按键的字符数据(char类型)。此外各种输入法输入的非英文字符也会触发KeyDown事件,比如用户使用的中文输入法输入一个汉字,则会触发一个(>>>自己试验了下对于中文输入法输入一个汉字会触发两次KeyPress事件,不知道有什么方法可以解决这种情况????输入英文和数字只触发一次)KeyPress事件,事件的参数就是汉字的编码。

What's the difference between KeyDown and KeyPress in .NET? - Stack Overflow
http://stackoverflow.com/questions/1367700/whats-the-difference-between-keydown-and-keypress-in-net

There is apparently a lot of misunderstanding about this!

The only practical difference between KeyDown and KeyPress is that KeyPress relays the character resulting from a keypress, and is only called if there is one.

In other words, if you press A on your keyboard, you'll get this sequence of events:

  1. KeyDown: KeyCode=Keys.A, KeyData=Keys.A, Modifiers=Keys.None
  2. KeyPress: KeyChar='a'
  3. KeyUp: KeyCode=Keys.A

But if you press Shift+A, you'll get:

  1. KeyDown: KeyCode=Keys.ShiftKey, KeyData=Keys.ShiftKey, Shift, Modifiers=Keys.Shift
  2. KeyDown: KeyCode=Keys.A, KeyData=Keys.A | Keys.Shift, Modifiers=Keys.Shift
  3. KeyPress: KeyChar='A'
  4. KeyUp: KeyCode=Keys.A
  5. KeyUp: KeyCode=Keys.ShiftKey

If you hold down the keys for a while, you'll get something like:

  1. KeyDown: KeyCode=Keys.ShiftKey, KeyData=Keys.ShiftKey, Shift, Modifiers=Keys.Shift
  2. KeyDown: KeyCode=Keys.ShiftKey, KeyData=Keys.ShiftKey, Shift, Modifiers=Keys.Shift
  3. KeyDown: KeyCode=Keys.ShiftKey, KeyData=Keys.ShiftKey, Shift, Modifiers=Keys.Shift
  4. KeyDown: KeyCode=Keys.ShiftKey, KeyData=Keys.ShiftKey, Shift, Modifiers=Keys.Shift
  5. KeyDown: KeyCode=Keys.ShiftKey, KeyData=Keys.ShiftKey, Shift, Modifiers=Keys.Shift
  6. KeyDown: KeyCode=Keys.A, KeyData=Keys.A | Keys.Shift, Modifiers=Keys.Shift
  7. KeyPress: KeyChar='A'
  8. KeyDown: KeyCode=Keys.A, KeyData=Keys.A | Keys.Shift, Modifiers=Keys.Shift
  9. KeyPress: KeyChar='A'
  10. KeyDown: KeyCode=Keys.A, KeyData=Keys.A | Keys.Shift, Modifiers=Keys.Shift
  11. KeyPress: KeyChar='A'
  12. KeyDown: KeyCode=Keys.A, KeyData=Keys.A | Keys.Shift, Modifiers=Keys.Shift
  13. KeyPress: KeyChar='A'
  14. KeyDown: KeyCode=Keys.A, KeyData=Keys.A | Keys.Shift, Modifiers=Keys.Shift
  15. KeyPress: KeyChar='A'
  16. KeyUp: KeyCode=Keys.A
  17. KeyUp: KeyCode=Keys.ShiftKey

Notice that KeyPress occurs in between KeyDown and KeyUp, not after KeyUp, as many of the other answers have stated, that KeyPress is not called when a character isn't generated, and that KeyDownis repeated while the key is held down, also contrary to many of the other answers.

Examples of keys that do not directly result in calls to KeyPress:

  • Shift, Ctrl, Alt
  • F1 through F12
  • Arrow keys

Examples of keys that do result in calls to KeyPress:

  • A through Z, 0 through 9, etc.
  • Spacebar
  • Tab (KeyChar='\t', ASCII 9)
  • Enter (KeyChar='\r', ASCII 13)
  • Esc (KeyChar='\x1b', ASCII 27)
  • Backspace (KeyChar='\b', ASCII 8)

For the curious, KeyDown roughly correlates to WM_KEYDOWN, KeyPress to WM_CHAR, and KeyUp to WM_KEYUP. WM_KEYDOWN can be called fewer than the the number of key repeats, but it sends a repeat count, which, IIRC, WinForms uses to generate exactly one KeyDown per repeat.

转载于:https://my.oschina.net/ray1421/blog/651040

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值