タイトル | : 無茶してみた |
記事No | : 5646 |
投稿日 | : 2007/06/14(Thu) 15:30 |
投稿者 | : 魔界の仮面弁士 |
> 案3) System.Windows.Forms.ComboBox+ComboBoxChildNativeWindow オブジェクトを直接操作。
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click ComboBox1.DropDownStyle = ComboBoxStyle.DropDown ComboBox1.BackColor = Color.White
DisableComboBox(ComboBox1) End Sub
Private Sub DisableComboBox(ByVal comboBox As ComboBox) 'コンボボックス自体を使用不可にする。 comboBox.Enabled = False
Dim field As FieldInfo = comboBox.GetType().GetField("childEdit", _ BindingFlags.GetField Or BindingFlags.NonPublic Or BindingFlags.Instance) Dim childEdit As NativeWindow = DirectCast(field.GetValue(comboBox), NativeWindow) If childEdit IsNot Nothing Then '内部テキストボックスのみ、使用可能に戻す。 EnableWindow(childEdit.Handle, True) End If End Sub
Private Declare Auto Function EnableWindow Lib "user32" (ByVal hWnd As IntPtr, _ <MarshalAs(UnmanagedType.Bool)> ByVal bEnable As Boolean) As _ <MarshalAs(UnmanagedType.Bool)> Boolean
|