1.输入控件如 ComboBox输入内容后自动填充
属性AutoCompleteMode = AutoCompleteMode.SuggestAppend;
属性AutoCompleteSource = AutoCompleteSource.ListItems;
2.光标定位到文本框内容的最右边
this.txtID.Focus();
this.txtID.Select(this.txtID.TextLength, 0);
this.txtID.ScrollToCaret();
3.使用Enter键代替Tab键
首先在Form_Load()方法中添加如下代码:
foreach (Control ctrl in this.groupBox1.Controls)
{
if ((ctrl is TextBox) || (ctrl is ComboBox) || (ctrl is ComboBox)) //如果文本框或下拉框放在组合框中,你应该用如groupBox1.TextBox
{
ctrl.KeyDown += new System.Windows.Forms.KeyEventHandle(this.EnterKeyDown);
}
}
再添加事件函数:
private void EnterKeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
System.Windows.Forms.SendKeys.Send("{TAB}");
}
}
4.修改输入法中全角/半角问题:
至VS2005测试版以来就一直存在这个问题,在WinForm应用程序中和Visual Studio 2005开发环境中,一切换窗口,中文输入法就会变成全角。微软终于发布补丁程序了。
关于全角输入法Bug的官方文档 KB925488:
http://support.microsoft.com/default.aspx/kb/925488/
但是官方没有提供下载地址。
需要补丁的朋友可以从这儿下载:http://www.joyblog.cn/attachments/month_0702/ndp20-kb925488-x86.rar
#region 修正输入法全角/半角的问题
//声明一些API函数
[DllImport("imm32.dll")]
public static extern IntPtr ImmGetContext(IntPtr hwnd);
[DllImport("imm32.dll")]
public static extern bool ImmGetOpenStatus(IntPtr himc);
[DllImport("imm32.dll")]
public static extern bool ImmSetOpenStatus(IntPtr himc, bool b);
[DllImport("imm32.dll")]
public static extern bool ImmGetConversionStatus(IntPtr himc, ref int lpdw, ref int lpdw2);
[DllImport("imm32.dll")]
public static extern int ImmSimulateHotKey(IntPtr hwnd, int lngHotkey);
private const int IME_CMODE_FULLSHAPE = 0x8;
private const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11;
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
IntPtr HIme = ImmGetContext(this.Handle);
//如果输入法处于打开状态
if (ImmGetOpenStatus(HIme))
{
int iMode = 0;
int iSentence = 0;
//检索输入法信息
bool bSuccess = ImmGetConversionStatus(HIme, ref iMode, ref iSentence);
if (bSuccess)
{
//如果是全角,转换成半角
if ((iMode & IME_CMODE_FULLSHAPE) > 0)
ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE);
}
}
}
#endregion 修正输入法全角/半角的问题
并加上命名空间: using System.Runtime.InteropServices;
5.winform窗体间传值的问题(待续)
SendKeys.Send(Keys.Enter.ToString());//模拟按下回车键 SendKeys.Send("{BackSpace}");// 模拟按下退格键 以下是 SendKeys 的一些特殊键代码表。 键 代码 BACKSPACE {BACKSPACE}、{BS} 或 {BKSP} BREAK {BREAK} CAPS LOCK {CAPSLOCK} DEL 或 DELETE {DELETE} 或 {DEL} DOWN ARROW(下箭头键) {DOWN} END {END} ENTER {ENTER} 或 ~ ESC {ESC} HELP {HELP} HOME {HOME} INS 或 INSERT {INSERT} 或 {INS} LEFT ARROW(左箭头键) {LEFT} NUM LOCK {NUMLOCK} PAGE DOWN {PGDN} PAGE UP {PGUP} PRINT SCREEN {PRTSC}(保留,以备将来使用) RIGHT ARROW(右箭头键) {RIGHT} SCROLL LOCK {SCROLLLOCK} TAB {TAB} UP ARROW(上箭头键) {UP} F1 {F1} F2 {F2} F3 {F3} F4 {F4} F5 {F5} F6 {F6} F7 {F7} F8 {F8} F9 {F9} F10 {F10} F11 {F11} F12 {F12} F13 {F13} F14 {F14} F15 {F15} F16 {F16} 数字键盘加号 {ADD} 数字键盘减号 {SUBTRACT} 数字键盘乘号 {MULTIPLY} 数字键盘除号 {DIVIDE} 若要指定与 SHIFT、CTRL 和 ALT 键的任意组合一起使用的键,请在这些键代码之前加上以下一个或多个代码: 键 代码 SHIFT + CTRL ^ ALT %