OSDN Git Service

v2.6.0.0 draft
[passer/Passer2.git] / components / AutoCompleteTextBox.cs
index 40cca29..b837ab2 100644 (file)
@@ -64,7 +64,7 @@ namespace Lugens.Components
         /// IME変換時のイベントハンドラ
         /// </summary>
         /// <param name="type"></param>
-        public delegate void ImeCompositionEventHandler(string text);
+        public delegate void ImeCompositionEventHandler(int type, string text);
         public event ImeCompositionEventHandler ImeComposition;
 
         private bool complemented = false;
@@ -74,6 +74,12 @@ namespace Lugens.Components
             set { complemented = value; }
         }
 
+        private string imeText;
+        public string ImeText
+        {
+            get { return imeText; }
+            set { imeText = value; }
+        }
 
         protected override void Dispose(bool disposing)
         {
@@ -122,7 +128,7 @@ namespace Lugens.Components
             switch (e.KeyCode)
             {
                 case Keys.Tab:
-                    if (this.dropdownForm.Visible)
+                    if (this.dropdownForm.Visible && this.dropdownForm.DropdownListBox.SelectedIndex >= 0)
                     {
                         //タブキーによるコマンド補完
                         this.complemented = true;
@@ -144,7 +150,7 @@ namespace Lugens.Components
                         //e.Handled = true;
                     }
                     break;
-/*
+
                 case Keys.A:
                     if ((Keys.Control & Control.ModifierKeys) == Keys.Control || Keys.Home == e.KeyCode)
                     {
@@ -152,7 +158,7 @@ namespace Lugens.Components
                         e.Handled = true;
                     }
                     break;
-*/
+
                 case Keys.Up:
                     if (listBox.Items.Count > 0)
                     {
@@ -352,8 +358,8 @@ namespace Lugens.Components
             switch (m.Msg)
             {
                 case 0x010F: //WM_IME_COMPOSITION
-                    if (((int)m.LParam & GCS_COMPSTR) == GCS_COMPSTR)
-                    {
+                    //if (((int)m.LParam & GCS_COMPSTR) == GCS_COMPSTR)
+                    //{
                         IntPtr hIMC = ImmGetContext(this.Handle);
                         StringBuilder sb = new StringBuilder(1024);
                         byte[] buffer = new byte[1024];
@@ -361,8 +367,8 @@ namespace Lugens.Components
                         ImmReleaseContext(this.Handle, hIMC);
                         string str = Encoding.GetEncoding("Shift_JIS").GetString(buffer);
                         str = str.TrimEnd('\0');
-                        this.ImeComposition(str);
-                    }
+                        this.ImeComposition((int)m.LParam, str);
+                    //}
                     break;
             }
             base.WndProc(ref m);