winform 中的幾個技巧

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 % 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章