C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[16]: UserControlとValidatingについて


(過去ログ 94 を表示中)

[トピック内 24 記事 (1 - 20 表示)]  << 0 | 1 >>

■56238 / inTopicNo.1)  UserControlとValidatingについて
  
□投稿者/ KK (1回)-(2011/01/06(Thu) 13:36:28)

分類:[VB.NET/VB2005 以降] 

開発環境:WinXP SP3 
使用言語:Visual Basic .NET 2005 

以下の条件の場合に、Validating イベントが2回連続で発生してしまいます。
通常は1回の発生だと思っていたのですが、2回発生してしまうのは仕様でしょうか。

情報をお持ちの方がおられましたら、ご教示いただけませんでしょうか。
よろしくお願い致します。

@UserControl上にTextBoxを1個作成し、UserControlを作成。

AForm上に@で作成したUserControl(A)とTextBox(B)を作成。

BTextBox(B)のValidatingイベントに
   Private Sub TextBoxB_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBoxB.Validating
        e.Cancel = (TextBoxB.Text = String.Empty)
        Debug.Print("TextBoxB_Validating")
  End Sub

CTextBox(B)の値が空白の状態で、UserControl上のTextBoxをマウスでクリック。

  ※1回目は1度しか発生しないのですが、続けてUserControl上のTextBoxを再度クリックすると
     Validatingイベントが2回発生してしまいます。

  ※Tabキー、SelectNextControlでのフォーカス移動では、1回のみの発生でした。

引用返信 編集キー/
■56240 / inTopicNo.2)  Re[1]: UserControlとValidatingについて
□投稿者/ todo (81回)-(2011/01/06(Thu) 15:09:07)
> 2回発生してしまうのは仕様でしょうか。

バグだと思います。
StackTraceを比較してみては?

Debug.WriteLine((New StackTrace(True)).ToString())
引用返信 編集キー/
■56241 / inTopicNo.3)  Re[1]: UserControlとValidatingについて
□投稿者/ shu (343回)-(2011/01/06(Thu) 15:29:18)
No56238 (KK さん) に返信

A:UserControlのTextBox
B:TextBoxB
C:UserControl

としたとき

Cをクリックしてから、Aをクリックすると1回づつの発生となるので、
これらが同時に発生しているかと思われます。
また
Aにフォーカスを移動 -> Bへフォーカスを移動 -> Bのテキストを空にする
-> Aをクリック ==> Validatingは1回発生
となる
ValidatingがキャンセルされたときにCのActiveControlがAではなくなり
AをクリックすることによりCとAへの移動という2アクション発生し1回目
のValidatingでCへの移動がキャンセルされ2回目のValidatingではAのActive化が
キャンセルされているのではないでしょうか?(もしくは逆)


引用返信 編集キー/
■56243 / inTopicNo.4)  Re[1]: UserControlとValidatingについて
□投稿者/ KK (3回)-(2011/01/06(Thu) 15:58:32)
todo様
ご返信いただき、誠にありがとうございます。

>Debug.WriteLine((New StackTrace(True)).ToString())
StackTraceで確認してみましたところ、1回目と2回目で違った場所がありました。

以下の部分を再度調べてみます。

************************************************************************************************************************
   場所 WindowsApplication1.Form1.TextBox1_Validating(Object sender, CancelEventArgs e) 場所 
   場所 System.Windows.Forms.Control.OnValidating(CancelEventArgs e)
   場所 System.Windows.Forms.Control.NotifyValidating()
   場所 System.Windows.Forms.Control.PerformControlValidation(Boolean bulkValidation)
   場所 System.Windows.Forms.ContainerControl.ValidateThroughAncestor(Control ancestorControl, Boolean preventFocusChangeOnError)
   場所 System.Windows.Forms.ContainerControl.EnterValidation(Control enterControl)
   場所 System.Windows.Forms.ContainerControl.UpdateFocusedControl()
   場所 System.Windows.Forms.ContainerControl.AssignActiveControlInternal(Control value)
   場所 System.Windows.Forms.ContainerControl.ActivateControlInternal(Control control, Boolean originator)
   場所 System.Windows.Forms.ContainerControl.ActivateControlInternal(Control control, Boolean originator)
   場所 System.Windows.Forms.ContainerControl.ActivateControlInternal(Control control)
   場所 System.Windows.Forms.Control.WmSetFocus(Message& m)
   場所 System.Windows.Forms.Control.WndProc(Message& m)
   場所 System.Windows.Forms.TextBoxBase.WndProc(Message& m)
   場所 System.Windows.Forms.TextBox.WndProc(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   場所 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
----------------------------------------------------------------------------------------------------------------------
   1回目
   場所 System.Windows.Forms.UnsafeNativeMethods.SetFocus(HandleRef hWnd)
   場所 System.Windows.Forms.Control.FocusInternal()
----------------------------------------------------------------------------------------------------------------------
   2回目 ※1回目の部分が以下のように変わっていました。
          ※ その他の部分は同じ流れで表示されていました。
   場所 System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   場所 System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
   場所 System.Windows.Forms.Control.DefWndProc(Message& m)
   場所 System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
   場所 System.Windows.Forms.Control.WndProc(Message& m)
   場所 System.Windows.Forms.TextBoxBase.WndProc(Message& m)
----------------------------------------------------------------------------------------------------------------------
   場所 System.Windows.Forms.TextBox.WndProc(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   場所 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   場所 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   場所 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
   場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   場所 System.Windows.Forms.Application.Run(ApplicationContext context)
   場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
   場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
   場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
   場所 WindowsApplication1.My.MyApplication.Main(String[] Args) 場所 17d14f5c-a337-4978-8281-53493378c1071.vb:行 81
   場所 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
   場所 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   場所 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   場所 System.Threading.ThreadHelper.ThreadStart()
************************************************************************************************************************



引用返信 編集キー/
■56244 / inTopicNo.5)  Re[2]: UserControlとValidatingについて
□投稿者/ KK (4回)-(2011/01/06(Thu) 16:20:25)
shu 様
ご返信いただき、誠にありがとうございます。

>A:UserControlのTextBox
>B:TextBoxB
>C:UserControl

> ValidatingがキャンセルされたときにCのActiveControlがAではなくなり
> AをクリックすることによりCとAへの移動という2アクション発生し1回目
> のValidatingでCへの移動がキャンセルされ2回目のValidatingではAのActive化が
> キャンセルされているのではないでしょうか?(もしくは逆)

教えていただいた情報をもとに、もう一度調査してみます。
いろいろ試していただき、本当にありがとうございます。

※CheckBox、ComboBoxで、同様に確認してみました。
結果は、1回しかValidatingイベントは発生しませんでした。
TextBoxを調整することで、回避できそうな気もしますが・・・。


引用返信 編集キー/
■56245 / inTopicNo.6)  Re[2]: UserControlとValidatingについて
□投稿者/ todo (82回)-(2011/01/06(Thu) 16:40:47)
2011/01/06(Thu) 16:45:11 編集(投稿者)

> 場所 System.Windows.Forms.TextBox.WndProc(Message& m)

ここの引数がどうなっているか気になりますね。

検証用のカスタムコントロール
Public Class TextBoxEx
Inherits TextBox
Private cnt As Integer = 0
Protected Overrides Sub WndProc(ByRef m As Message)
cnt += 1
System.Diagnostics.Debug.WriteLine(String.Format("{0}:S{1}:{2}", Me.Name, cnt, m))
MyBase.WndProc(m)
System.Diagnostics.Debug.WriteLine(String.Format("{0}:E{1}:{2}", Me.Name, cnt, m))
cnt -= 1
End Sub
End Class

引用返信 編集キー/
■56249 / inTopicNo.7)  Re[3]: UserControlとValidatingについて
□投稿者/ KK (5回)-(2011/01/06(Thu) 19:16:02)
todo 様
返信が遅くなり、申し訳ありません。

> 2011/01/06(Thu) 16:45:11 編集(投稿者)
> 
>>  場所 System.Windows.Forms.TextBox.WndProc(Message& m)
> 
> ここの引数がどうなっているか気になりますね。
> 

 TextBox(B)の部分を先ほど記載いただきましたTextBoxExに
置き換えて出力してみました。

単純なTextの比較で申し訳ありません。

*******************************************************************************************************************
TextBoxEx1:S1:msg=0x8 (WM_KILLFOCUS) hwnd=0x1007b8 wparam=0x16077e lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x1007b8 wparam=0x20007b8 lparam=0x1007b8 result=0x0
TextBoxEx1:E2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x1007b8 wparam=0x20007b8 lparam=0x1007b8 result=0x0
TextBoxEx1:E1:msg=0x8 (WM_KILLFOCUS) hwnd=0x1007b8 wparam=0x16077e lparam=0x0 result=0x1
TextBoxEx1:S1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x1007b8 wparam=0x0 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:E1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x1007b8 wparam=0x0 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:S1:msg=0xe (WM_GETTEXTLENGTH) hwnd=0x1007b8 wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:E1:msg=0xe (WM_GETTEXTLENGTH) hwnd=0x1007b8 wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:S1:msg=0xd (WM_GETTEXT) hwnd=0x1007b8 wparam=0x2 lparam=0x239dd8 result=0x0
TextBoxEx1:E1:msg=0xd (WM_GETTEXT) hwnd=0x1007b8 wparam=0x2 lparam=0x239dd8 result=0x0
   場所 WindowsApplication1.Form1.TextBoxEx1_Validating(Object sender, CancelEventArgs e) 場所 D:\TEST\WindowsApplication1\WindowsApplication1\Form1.vb:行 13
   場所 System.Windows.Forms.Control.OnValidating(CancelEventArgs e)
   場所 System.Windows.Forms.Control.NotifyValidating()
   場所 System.Windows.Forms.Control.PerformControlValidation(Boolean bulkValidation)
   場所 System.Windows.Forms.ContainerControl.ValidateThroughAncestor(Control ancestorControl, Boolean preventFocusChangeOnError)
   場所 System.Windows.Forms.ContainerControl.EnterValidation(Control enterControl)
   場所 System.Windows.Forms.ContainerControl.UpdateFocusedControl()
   場所 System.Windows.Forms.ContainerControl.AssignActiveControlInternal(Control value)
   場所 System.Windows.Forms.ContainerControl.ActivateControlInternal(Control control, Boolean originator)
   場所 System.Windows.Forms.ContainerControl.ActivateControlInternal(Control control, Boolean originator)
   場所 System.Windows.Forms.ContainerControl.ActivateControlInternal(Control control)
   場所 System.Windows.Forms.Control.WmSetFocus(Message& m)
   場所 System.Windows.Forms.Control.WndProc(Message& m)
   場所 System.Windows.Forms.TextBoxBase.WndProc(Message& m)
   場所 System.Windows.Forms.TextBox.WndProc(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   場所 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   場所 System.Windows.Forms.UnsafeNativeMethods.SetFocus(HandleRef hWnd)
   場所 System.Windows.Forms.Control.FocusInternal()
   場所 System.Windows.Forms.TextBox.WndProc(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   場所 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   場所 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   場所 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
   場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   場所 System.Windows.Forms.Application.Run(ApplicationContext context)
   場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
   場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
   場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
   場所 WindowsApplication1.My.MyApplication.Main(String[] Args) 場所 17d14f5c-a337-4978-8281-53493378c1071.vb:行 81
   場所 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
   場所 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   場所 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   場所 System.Threading.ThreadHelper.ThreadStart()

TextBoxEx1:S1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x1007b8 wparam=0x1 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:E1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x1007b8 wparam=0x1 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:S1:msg=0x7 (WM_SETFOCUS) hwnd=0x1007b8 wparam=0x16077e lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0xd2 hwnd=0x1007b8 wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0xd2 hwnd=0x1007b8 wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x1007b8 wparam=0xa lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x1007b8 wparam=0xa lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x1007b8 wparam=0xb lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x1007b8 wparam=0xb lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x1007b8 wparam=0x10007b8 lparam=0x1007b8 result=0x0
TextBoxEx1:E2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x1007b8 wparam=0x10007b8 lparam=0x1007b8 result=0x0
TextBoxEx1:E1:msg=0x7 (WM_SETFOCUS) hwnd=0x1007b8 wparam=0x16077e lparam=0x0 result=0x1
TextBoxEx1:S1:msg=0xf (WM_PAINT) hwnd=0x1007b8 wparam=0x0 lparam=0x0 result=0x0
-----------------------------------------------------------------------------------------------
1回目のValidating
TextBoxEx1:S2:msg=0x14 (WM_ERASEBKGND) hwnd=0x1007b8 wparam=0x1010075 lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0x14 (WM_ERASEBKGND) hwnd=0x1007b8 wparam=0x1010075 lparam=0x0 result=0x1
-----------------------------------------------------------------------------------------------
2回目のValidatingによる違い
TextBoxEx1:S2:msg=0x14 (WM_ERASEBKGND) hwnd=0x1007b8 wparam=0x600113c2 lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0x14 (WM_ERASEBKGND) hwnd=0x1007b8 wparam=0x600113c2 lparam=0x0 result=0x1
TextBoxEx1:E1:msg=0xf (WM_PAINT) hwnd=0x1007b8 wparam=0x0 lparam=0x0 result=0x1
TextBoxEx1:S1:msg=0x8 (WM_KILLFOCUS) hwnd=0x1007b8 wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x1007b8 wparam=0x20007b8 lparam=0x1007b8 result=0x0
TextBoxEx1:E2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x1007b8 wparam=0x20007b8 lparam=0x1007b8 result=0x0
TextBoxEx1:E1:msg=0x8 (WM_KILLFOCUS) hwnd=0x1007b8 wparam=0x0 lparam=0x0 result=0x1
TextBoxEx1:S1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x1007b8 wparam=0x0 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:S2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x1007b8 wparam=0x1 lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x1007b8 wparam=0x1 lparam=0x0 result=0x0
TextBoxEx1:E1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x1007b8 wparam=0x0 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:S1:msg=0xf (WM_PAINT) hwnd=0x1007b8 wparam=0x0 lparam=0x0 result=0x0
-----------------------------------------------------------------------------------------------
TextBoxEx1:E1:msg=0xf (WM_PAINT) hwnd=0x1007b8 wparam=0x0 lparam=0x0 result=0x1
*****************************************************************************************************************

引用返信 編集キー/
■56250 / inTopicNo.8)  Re[4]: UserControlとValidatingについて
□投稿者/ todo (85回)-(2011/01/06(Thu) 19:22:52)
UserControlの方もTextBoxExを使ってください。
引用返信 編集キー/
■56251 / inTopicNo.9)  Re[5]: UserControlとValidatingについて
□投稿者/ KK (6回)-(2011/01/06(Thu) 19:53:37)
todo 様
> UserControlの方もTextBoxExを使ってください。
お手数をおかけしてすいません。

userTextBoxEx1:UserControl上のTextBoxExです。
TextBoxEx1:Form上のTextBoxExになります。

投稿できませんでしたので、分割しています。

****
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a900cc result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a900cc result=0x12
userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000012 result=0x0
userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000012 result=0x0
userTextBoxEx1:S1:msg=0xa0 (WM_NCMOUSEMOVE) hwnd=0x60776 wparam=0x12 lparam=0x1a900cc result=0x0
userTextBoxEx1:E1:msg=0xa0 (WM_NCMOUSEMOVE) hwnd=0x60776 wparam=0x12 lparam=0x1a900cc result=0x0
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a900ca result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a900ca result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a900ca result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a900ca result=0x1
userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:S1:msg=0xc224 hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x0
userTextBoxEx1:E1:msg=0xc224 hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x0
userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0xa0069 result=0x0
userTextBoxEx1:S2:msg=0x85 (WM_NCPAINT) hwnd=0x60776 wparam=0x1 lparam=0x0 result=0x0
userTextBoxEx1:E2:msg=0x85 (WM_NCPAINT) hwnd=0x60776 wparam=0x1 lparam=0x0 result=0x1
userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0xa0069 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c7 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c7 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c7 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c7 result=0x1
userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x90066 result=0x0
userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x90066 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c5 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c5 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c5 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a800c5 result=0x1
userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x90064 result=0x0
userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x90064 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c4 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c4 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c4 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c4 result=0x1
userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x80063 result=0x0
userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x80063 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c3 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c3 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c3 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a700c3 result=0x1
userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x80062 result=0x0
userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x80062 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c3 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c3 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x1
userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x70061 result=0x0
userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x70061 result=0x1
userTextBoxEx1:S1:msg=0x2a1 (WM_MOUSEHOVER) hwnd=0x60776 wparam=0x0 lparam=0x70061 result=0x0
userTextBoxEx1:E1:msg=0x2a1 (WM_MOUSEHOVER) hwnd=0x60776 wparam=0x0 lparam=0x70061 result=0x0
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x1
userTextBoxEx1:S1:msg=0x21 (WM_MOUSEACTIVATE) hwnd=0x60776 wparam=0x907da lparam=0x2010001 result=0x0
userTextBoxEx1:E1:msg=0x21 (WM_MOUSEACTIVATE) hwnd=0x60776 wparam=0x907da lparam=0x2010001 result=0x1
userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2010001 result=0x0
userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2010001 result=0x0
userTextBoxEx1:S1:msg=0x201 (WM_LBUTTONDOWN) hwnd=0x60776 wparam=0x1 lparam=0x70061 result=0x0
****
引用返信 編集キー/
■56252 / inTopicNo.10)  Re[5]: UserControlとValidatingについて
□投稿者/ KK (7回)-(2011/01/06(Thu) 19:54:55)
todo 様

***上記 続きです****************************************************************************************************
TextBoxEx1:S1:msg=0x8 (WM_KILLFOCUS) hwnd=0x507be wparam=0x60776 lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x507be wparam=0x20007be lparam=0x507be result=0x0
TextBoxEx1:E2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x507be wparam=0x20007be lparam=0x507be result=0x0
TextBoxEx1:E1:msg=0x8 (WM_KILLFOCUS) hwnd=0x507be wparam=0x60776 lparam=0x0 result=0x1
TextBoxEx1:S1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x507be wparam=0x0 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:E1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x507be wparam=0x0 lparam=0xffffffffc000000f result=0x0
userTextBoxEx1:S2:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x60776 wparam=0x1 lparam=0xffffffffc000000f result=0x0
userTextBoxEx1:E2:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x60776 wparam=0x1 lparam=0xffffffffc000000f result=0x0
userTextBoxEx1:S2:msg=0x7 (WM_SETFOCUS) hwnd=0x60776 wparam=0x507be lparam=0x0 result=0x0
userTextBoxEx1:S3:msg=0xd2 hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x0
userTextBoxEx1:E3:msg=0xd2 hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:S1:msg=0xe (WM_GETTEXTLENGTH) hwnd=0x507be wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:E1:msg=0xe (WM_GETTEXTLENGTH) hwnd=0x507be wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:S1:msg=0xd (WM_GETTEXT) hwnd=0x507be wparam=0x2 lparam=0x230f10 result=0x0
TextBoxEx1:E1:msg=0xd (WM_GETTEXT) hwnd=0x507be wparam=0x2 lparam=0x230f10 result=0x0
場所 WindowsApplication1.Form1.TextBoxEx1_Validating(Object sender, CancelEventArgs e)
'文字数の制限で、投稿できませんでしたので省略しています
場所 System.Threading.ThreadHelper.ThreadStart()

userTextBoxEx1:S3:msg=0x8 (WM_KILLFOCUS) hwnd=0x60776 wparam=0x507be lparam=0x0 result=0x0
userTextBoxEx1:S4:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x60776 wparam=0x2000776 lparam=0x60776 result=0x0
userTextBoxEx1:E4:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x60776 wparam=0x2000776 lparam=0x60776 result=0x0
userTextBoxEx1:E3:msg=0x8 (WM_KILLFOCUS) hwnd=0x60776 wparam=0x507be lparam=0x0 result=0x1
userTextBoxEx1:S3:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x60776 wparam=0x0 lparam=0xffffffffc000000f result=0x0
userTextBoxEx1:E3:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x60776 wparam=0x0 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:S1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x507be wparam=0x1 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:E1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x507be wparam=0x1 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:S1:msg=0x7 (WM_SETFOCUS) hwnd=0x507be wparam=0x60776 lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0xd2 hwnd=0x507be wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0xd2 hwnd=0x507be wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x507be wparam=0xa lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x507be wparam=0xa lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x507be wparam=0xb lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x507be wparam=0xb lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x507be wparam=0x10007be lparam=0x507be result=0x0
TextBoxEx1:E2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x507be wparam=0x10007be lparam=0x507be result=0x0
TextBoxEx1:E1:msg=0x7 (WM_SETFOCUS) hwnd=0x507be wparam=0x60776 lparam=0x0 result=0x1
userTextBoxEx1:E2:msg=0x7 (WM_SETFOCUS) hwnd=0x60776 wparam=0x507be lparam=0x0 result=0x0
TextBoxEx1:S1:msg=0x8 (WM_KILLFOCUS) hwnd=0x507be wparam=0x60776 lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x507be wparam=0x20007be lparam=0x507be result=0x0
TextBoxEx1:E2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x507be wparam=0x20007be lparam=0x507be result=0x0
TextBoxEx1:E1:msg=0x8 (WM_KILLFOCUS) hwnd=0x507be wparam=0x60776 lparam=0x0 result=0x1
TextBoxEx1:S1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x507be wparam=0x0 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:E1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x507be wparam=0x0 lparam=0xffffffffc000000f result=0x0
userTextBoxEx1:S2:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x60776 wparam=0x1 lparam=0xffffffffc000000f result=0x0
userTextBoxEx1:E2:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x60776 wparam=0x1 lparam=0xffffffffc000000f result=0x0
userTextBoxEx1:S2:msg=0x7 (WM_SETFOCUS) hwnd=0x60776 wparam=0x507be lparam=0x0 result=0x0
userTextBoxEx1:S3:msg=0xd2 hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x0
userTextBoxEx1:E3:msg=0xd2 hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:S1:msg=0xe (WM_GETTEXTLENGTH) hwnd=0x507be wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:E1:msg=0xe (WM_GETTEXTLENGTH) hwnd=0x507be wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:S1:msg=0xd (WM_GETTEXT) hwnd=0x507be wparam=0x2 lparam=0x230f10 result=0x0
TextBoxEx1:E1:msg=0xd (WM_GETTEXT) hwnd=0x507be wparam=0x2 lparam=0x230f10 result=0x0
場所 WindowsApplication1.Form1.TextBoxEx1_Validating(Object sender, CancelEventArgs e)
'文字数の制限で、投稿できませんでしたので省略しています
場所 System.Threading.ThreadHelper.ThreadStart()

userTextBoxEx1:S3:msg=0x8 (WM_KILLFOCUS) hwnd=0x60776 wparam=0x507be lparam=0x0 result=0x0
userTextBoxEx1:S4:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x60776 wparam=0x2000776 lparam=0x60776 result=0x0
userTextBoxEx1:E4:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x60776 wparam=0x2000776 lparam=0x60776 result=0x0
userTextBoxEx1:E3:msg=0x8 (WM_KILLFOCUS) hwnd=0x60776 wparam=0x507be lparam=0x0 result=0x1
userTextBoxEx1:S3:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x60776 wparam=0x0 lparam=0xffffffffc000000f result=0x0
userTextBoxEx1:E3:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x60776 wparam=0x0 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:S1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x507be wparam=0x1 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:E1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x507be wparam=0x1 lparam=0xffffffffc000000f result=0x0
TextBoxEx1:S1:msg=0x7 (WM_SETFOCUS) hwnd=0x507be wparam=0x60776 lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0xd2 hwnd=0x507be wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0xd2 hwnd=0x507be wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x507be wparam=0xa lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x507be wparam=0xa lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x507be wparam=0xb lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0x282 (WM_IME_NOTIFY) hwnd=0x507be wparam=0xb lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x507be wparam=0x10007be lparam=0x507be result=0x0
TextBoxEx1:E2:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x507be wparam=0x10007be lparam=0x507be result=0x0
TextBoxEx1:E1:msg=0x7 (WM_SETFOCUS) hwnd=0x507be wparam=0x60776 lparam=0x0 result=0x1
userTextBoxEx1:E2:msg=0x7 (WM_SETFOCUS) hwnd=0x60776 wparam=0x507be lparam=0x0 result=0x0
userTextBoxEx1:E1:msg=0x201 (WM_LBUTTONDOWN) hwnd=0x60776 wparam=0x1 lparam=0x70061 result=0x1
userTextBoxEx1:S1:msg=0xf (WM_PAINT) hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x0
userTextBoxEx1:E1:msg=0xf (WM_PAINT) hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x1
TextBoxEx1:S1:msg=0xf (WM_PAINT) hwnd=0x507be wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:S2:msg=0x14 (WM_ERASEBKGND) hwnd=0x507be wparam=0x4012245 lparam=0x0 result=0x0
TextBoxEx1:E2:msg=0x14 (WM_ERASEBKGND) hwnd=0x507be wparam=0x4012245 lparam=0x0 result=0x1
TextBoxEx1:E1:msg=0xf (WM_PAINT) hwnd=0x507be wparam=0x0 lparam=0x0 result=0x1
userTextBoxEx1:S1:msg=0x202 (WM_LBUTTONUP) hwnd=0x60776 wparam=0x0 lparam=0x70061 result=0x0
userTextBoxEx1:S2:msg=0x215 (WM_CAPTURECHANGED) hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x0
userTextBoxEx1:E2:msg=0x215 (WM_CAPTURECHANGED) hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x1
userTextBoxEx1:E1:msg=0x202 (WM_LBUTTONUP) hwnd=0x60776 wparam=0x0 lparam=0x70061 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a600c2 result=0x1
userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x70061 result=0x0
userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x70061 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a300c3 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x1a300c3 result=0x1
userTextBoxEx1:S1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x19f00c8 result=0x0
userTextBoxEx1:E1:msg=0x84 (WM_NCHITTEST) hwnd=0x60776 wparam=0x0 lparam=0x19f00c8 result=0x1
userTextBoxEx1:S1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:E1:msg=0x20 (WM_SETCURSOR) hwnd=0x60776 wparam=0x60776 lparam=0x2000001 result=0x0
userTextBoxEx1:S1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x67 result=0x0
userTextBoxEx1:E1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x60776 wparam=0x0 lparam=0x67 result=0x1
userTextBoxEx1:S1:msg=0x2a3 (WM_MOUSELEAVE) hwnd=0x60776 wparam=0x0 lparam=0x0 result=0x0
***********************************************************************************************************************
引用返信 編集キー/
■56254 / inTopicNo.11)  Re[6]: UserControlとValidatingについて
□投稿者/ todo (86回)-(2011/01/06(Thu) 20:57:33)
2011/01/06(Thu) 21:05:02 編集(投稿者)

1回目の TextBoxEx1_Validating の後、TextBoxEx1 に WM_SETFOCUS しているのに、userTextBoxEx1 に WM_SETFOCUS が来るのが謎ですね。

もっと調べるのであれば、Formの WndProc も記録するとか。
あとは、Spy++ というツールもあります。
引用返信 編集キー/
■56255 / inTopicNo.12)  Re[7]: UserControlとValidatingについて
□投稿者/ KK (9回)-(2011/01/06(Thu) 21:26:06)
todo 様

> 1回目の TextBoxEx1_Validating の後、TextBoxEx1 に WM_SETFOCUS しているのに、userTextBoxEx1 に WM_SETFOCUS が来るのが謎ですね。
  UserControl上に同一のTextBoxを作成し、Validatingイベントを確認すると1回だけしか発生しませんでした。
  FormとUserControlの変化が、何か悪さをしているのでしょうか。うーん、  本当に謎ですね。

> もっと調べるのであれば、Formの WndProc も記録するとか。
  FormとかUserControl等を、先ほど教えていただいた方法で記録をとってみます。

> あとは、Spy++ というツールもあります。
  使い方等、一度調べてみます。
  
いろいろアドバイス頂き ありがとうございました。

引用返信 編集キー/
■56261 / inTopicNo.13)  Re[8]: UserControlとValidatingについて
□投稿者/ shu (344回)-(2011/01/07(Fri) 07:52:55)
No56255 (KK さん) に返信

今回のコントロールの配置ってそんなに特殊ではないと
思うので、起こっていることを事実として受け止めて
Validatingが2回走っても問題ないようコーディングすれば
いいんじゃないかな?
これだけの為にTextBoxを拡張するのも大変ではないですか?

引用返信 編集キー/
■56265 / inTopicNo.14)  Re[9]: UserControlとValidatingについて
□投稿者/ KK (10回)-(2011/01/07(Fri) 09:31:01)
shu 様

> 今回のコントロールの配置ってそんなに特殊ではないと思うので、
> 起こっていることを事実として受け止めて
> Validatingが2回走っても問題ないようコーディングすれば
> いいんじゃないかな?
> これだけの為にTextBoxを拡張するのも大変ではないですか?
納期の問題もありますので、こちらの方法も検討していきます。

いろいろアドバイス頂き、本当にありがとうございました。

※余談ですが、Validatingでエラーの際にMsgBoxを表示するとValidatingが1回しか発生しないみたいです。
フォーカスが、MsgBoxに移ってしまうからなんでしょうか・・・。
ただ、Validating中にMsgBoxはタブーですので使えないんですが・・。


引用返信 編集キー/
■56278 / inTopicNo.15)  Re[8]: UserControlとValidatingについて
□投稿者/ todo (87回)-(2011/01/07(Fri) 16:29:25)
No56255 (KK さん) に返信
>>もっと調べるのであれば、Formの WndProc も記録するとか。
> FormとかUserControl等を、先ほど教えていただいた方法で記録をとってみます。

ログが読みづらかったので改良しました。

Public Class TextBoxEx
Inherits TextBox
Protected Overrides Sub WndProc(ByRef m As Message)
Util.CallWndProc(Me, MyBase.WndProc, m)
End Sub
End Class

Public Class Util
Public Delegate Sub WndProcHandler(ByRef m As Message)

Public Shared Sub CallWndProc(c As Control, wndProc As WndProcHandler, ByRef m As Message)
Debug.WriteLine(String.Format("{0}:{1}", c.Name, m))
Debug.Indent()
wndProc(m)
Debug.Unindent()
End Sub
End Class

引用返信 編集キー/
■56281 / inTopicNo.16)  Re[9]: UserControlとValidatingについて
□投稿者/ KK (11回)-(2011/01/07(Fri) 19:04:16)
todo 様
ありがとうございます。

> Public Class TextBoxEx
> Inherits TextBox
> Protected Overrides Sub WndProc(ByRef m As Message)
> Util.CallWndProc(Me, MyBase.WndProc, m)
> End Sub
 エラーが表示されましたので、以下のように変更してみました。
 ※デリゲートについて、勉強不足ですいません。
 
    Protected Overrides Sub WndProc(ByRef m As Message)
        Util.CallWndProc(Me, AddressOf MyBase.WndProc, m)
    End Sub

******************************************************************************************************************
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x18c0058 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x18c0058 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x18c0058 result=0x0
userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000012 result=0x0
userTextBoxEx1:msg=0xa0 (WM_NCMOUSEMOVE) hwnd=0x280dee wparam=0x12 lparam=0x18c0058 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1890059 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1890059 result=0x0
userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
userTextBoxEx1:msg=0xc184 hwnd=0x280dee wparam=0x0 lparam=0x0 result=0x0
userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0xd0023 result=0x0
    userTextBoxEx1:msg=0x85 (WM_NCPAINT) hwnd=0x280dee wparam=0x1 lparam=0x0 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1870059 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1870059 result=0x0
userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0xb0023 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1860059 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1860059 result=0x0
userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0xa0023 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1850059 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1850059 result=0x0
userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0x90023 result=0x0
userTextBoxEx1:msg=0x2a1 (WM_MOUSEHOVER) hwnd=0x280dee wparam=0x0 lparam=0x90023 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1850059 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1850059 result=0x0
userTextBoxEx1:msg=0x21 (WM_MOUSEACTIVATE) hwnd=0x280dee wparam=0x60e3c lparam=0x2010001 result=0x0
userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2010001 result=0x0
userTextBoxEx1:msg=0x201 (WM_LBUTTONDOWN) hwnd=0x280dee wparam=0x1 lparam=0x90023 result=0x0
    TextBoxEx1:msg=0x8 (WM_KILLFOCUS) hwnd=0xd0d8a wparam=0x280dee lparam=0x0 result=0x0
        TextBoxEx1:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0xd0d8a wparam=0x2000d8a lparam=0xd0d8a result=0x0
    TextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0xd0d8a wparam=0x0 lparam=0xffffffffc000000f result=0x0
    userTextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x280dee wparam=0x1 lparam=0xffffffffc000000f result=0x0
    userTextBoxEx1:msg=0x7 (WM_SETFOCUS) hwnd=0x280dee wparam=0xd0d8a lparam=0x0 result=0x0
        userTextBoxEx1:msg=0xd2 hwnd=0x280dee wparam=0x0 lparam=0x0 result=0x0
        TextBoxEx1:msg=0xe (WM_GETTEXTLENGTH) hwnd=0xd0d8a wparam=0x0 lparam=0x0 result=0x0
        TextBoxEx1:msg=0xd (WM_GETTEXT) hwnd=0xd0d8a wparam=0x2 lparam=0x224828 result=0x0
        場所 WindowsApplication1.Form1.TextBoxEx1_Validating(Object sender, CancelEventArgs e) 場所 D:\TEST\WindowsApplication1\WindowsApplication1\Form1.vb:行 15
 	  ↑
          省略
          ↓
        場所 System.Threading.ThreadHelper.ThreadStart()

        userTextBoxEx1:msg=0x8 (WM_KILLFOCUS) hwnd=0x280dee wparam=0xd0d8a lparam=0x0 result=0x0
            userTextBoxEx1:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x280dee wparam=0x2000dee lparam=0x280dee result=0x0
        userTextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x280dee wparam=0x0 lparam=0xffffffffc000000f result=0x0
        TextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0xd0d8a wparam=0x1 lparam=0xffffffffc000000f result=0x0
        TextBoxEx1:msg=0x7 (WM_SETFOCUS) hwnd=0xd0d8a wparam=0x280dee lparam=0x0 result=0x0
            TextBoxEx1:msg=0xd2 hwnd=0xd0d8a wparam=0x0 lparam=0x0 result=0x0
            TextBoxEx1:msg=0x282 (WM_IME_NOTIFY) hwnd=0xd0d8a wparam=0xa lparam=0x0 result=0x0
            TextBoxEx1:msg=0x282 (WM_IME_NOTIFY) hwnd=0xd0d8a wparam=0xb lparam=0x0 result=0x0
            TextBoxEx1:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0xd0d8a wparam=0x1000d8a lparam=0xd0d8a result=0x0
    TextBoxEx1:msg=0x8 (WM_KILLFOCUS) hwnd=0xd0d8a wparam=0x280dee lparam=0x0 result=0x0
        TextBoxEx1:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0xd0d8a wparam=0x2000d8a lparam=0xd0d8a result=0x0
    TextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0xd0d8a wparam=0x0 lparam=0xffffffffc000000f result=0x0
    userTextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x280dee wparam=0x1 lparam=0xffffffffc000000f result=0x0
    userTextBoxEx1:msg=0x7 (WM_SETFOCUS) hwnd=0x280dee wparam=0xd0d8a lparam=0x0 result=0x0
        userTextBoxEx1:msg=0xd2 hwnd=0x280dee wparam=0x0 lparam=0x0 result=0x0
        TextBoxEx1:msg=0xe (WM_GETTEXTLENGTH) hwnd=0xd0d8a wparam=0x0 lparam=0x0 result=0x0
        TextBoxEx1:msg=0xd (WM_GETTEXT) hwnd=0xd0d8a wparam=0x2 lparam=0x224828 result=0x0
          場所 WindowsApplication1.Form1.TextBoxEx1_Validating(Object sender, CancelEventArgs e) 場所 D:\TEST\WindowsApplication1\WindowsApplication1\Form1.vb:行 15
	  ↑
          省略
          ↓
          場所 System.Threading.ThreadHelper.ThreadStart()

        userTextBoxEx1:msg=0x8 (WM_KILLFOCUS) hwnd=0x280dee wparam=0xd0d8a lparam=0x0 result=0x0
            userTextBoxEx1:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0x280dee wparam=0x2000dee lparam=0x280dee result=0x0
        userTextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x280dee wparam=0x0 lparam=0xffffffffc000000f result=0x0
        TextBoxEx1:msg=0x281 (WM_IME_SETCONTEXT) hwnd=0xd0d8a wparam=0x1 lparam=0xffffffffc000000f result=0x0
        TextBoxEx1:msg=0x7 (WM_SETFOCUS) hwnd=0xd0d8a wparam=0x280dee lparam=0x0 result=0x0
            TextBoxEx1:msg=0xd2 hwnd=0xd0d8a wparam=0x0 lparam=0x0 result=0x0
            TextBoxEx1:msg=0x282 (WM_IME_NOTIFY) hwnd=0xd0d8a wparam=0xa lparam=0x0 result=0x0
            TextBoxEx1:msg=0x282 (WM_IME_NOTIFY) hwnd=0xd0d8a wparam=0xb lparam=0x0 result=0x0
            TextBoxEx1:msg=0x2111 (WM_REFLECT + WM_COMMAND) hwnd=0xd0d8a wparam=0x1000d8a lparam=0xd0d8a result=0x0
userTextBoxEx1:msg=0xf (WM_PAINT) hwnd=0x280dee wparam=0x0 lparam=0x0 result=0x0
TextBoxEx1:msg=0xf (WM_PAINT) hwnd=0xd0d8a wparam=0x0 lparam=0x0 result=0x0
    TextBoxEx1:msg=0x14 (WM_ERASEBKGND) hwnd=0xd0d8a wparam=0xffffffffc001086a lparam=0x0 result=0x0
userTextBoxEx1:msg=0x202 (WM_LBUTTONUP) hwnd=0x280dee wparam=0x0 lparam=0x90023 result=0x0
    userTextBoxEx1:msg=0x215 (WM_CAPTURECHANGED) hwnd=0x280dee wparam=0x0 lparam=0x0 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1850059 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1850059 result=0x0
userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0x90023 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x185005a result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x185005a result=0x0
userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0x90024 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x185005d result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x185005d result=0x0
userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0x90027 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1890067 result=0x0
userTextBoxEx1:msg=0x84 (WM_NCHITTEST) hwnd=0x280dee wparam=0x0 lparam=0x1890067 result=0x0
userTextBoxEx1:msg=0x20 (WM_SETCURSOR) hwnd=0x280dee wparam=0x280dee lparam=0x2000001 result=0x0
userTextBoxEx1:msg=0x200 (WM_MOUSEMOVE) hwnd=0x280dee wparam=0x0 lparam=0xd0031 result=0x0
userTextBoxEx1:msg=0x2a3 (WM_MOUSELEAVE) hwnd=0x280dee wparam=0x0 lparam=0x0 result=0x0
    userTextBoxEx1:msg=0x85 (WM_NCPAINT) hwnd=0x280dee wparam=0x1 lparam=0x0 result=0x0 
******************************************************************************************************************

shu様にアドバイス頂いた情報をもとに、
Validatingイベントで、Me.FindForm.ActiveControlのFocusedをみてみたところ、
UserControl Me.FindForm.ActiveControlのFocusedがTrueの場合は、1回のみ発生。
Falseの場合に2回発生していました。
(※Falseの時も初回のみ1回で、以降は2回でした)

引用返信 編集キー/
■56282 / inTopicNo.17)  Re[10]: UserControlとValidatingについて
□投稿者/ KK (12回)-(2011/01/07(Fri) 19:17:02)
先ほどの補足です。

> Validatingイベントで、Me.FindForm.ActiveControlのFocusedをみてみたところ、
> UserControl Me.FindForm.ActiveControlのFocusedがTrueの場合は、1回のみ発生。
> Falseの場合に2回発生していました。
> (※Falseの時も初回のみ1回で、以降は2回でした)

> UserControl Me.FindForm.ActiveControlのFocusedがTrueの場合
A:UserControlのTextBox
B:TextBoxB
C:UserControl
のCをクリックした場合

> UserControl Me.FindForm.ActiveControlのFocusedがFalseの場合
A:UserControlのTextBox
をクリックした場合でした。


Validatingイベント内で、
Me.FindForm.ActiveControl.Focused =true の場合は、通常通りチェック()。
Falseの場合に、1回目のチェック時にフラグを立てて
2回目以降チェックしないようにすれば回避できそうでしょうか・・。

ただ、自分の知識の中では、1回目のチェックで立てたフラグを戻すタイミングが
思いつかないのでもう少し検討しています。



引用返信 編集キー/
■56286 / inTopicNo.18)  Re[11]: UserControlとValidatingについて
□投稿者/ todo (88回)-(2011/01/07(Fri) 21:28:31)
2011/01/07(Fri) 21:38:31 編集(投稿者)
--ログの要約---
userTextBoxEx1:msg=0x201 (WM_LBUTTONDOWN) hwnd=0x280dee wparam=0x1 lparam=0x90023 result=0x0
    TextBoxEx1:msg=0x8 (WM_KILLFOCUS) hwnd=0xd0d8a wparam=0x280dee lparam=0x0 result=0x0
    userTextBoxEx1:msg=0x7 (WM_SETFOCUS) hwnd=0x280dee wparam=0xd0d8a lparam=0x0 result=0x0
        場所 WindowsApplication1.Form1.TextBoxEx1_Validating(Object sender, CancelEventArgs e) 場所 D:\TEST\WindowsApplication1
        TextBoxEx1:msg=0x7 (WM_SETFOCUS) hwnd=0xd0d8a wparam=0x280dee lparam=0x0 result=0x0
    TextBoxEx1:msg=0x8 (WM_KILLFOCUS) hwnd=0xd0d8a wparam=0x280dee lparam=0x0 result=0x0     ※ここが問題
    userTextBoxEx1:msg=0x7 (WM_SETFOCUS) hwnd=0x280dee wparam=0xd0d8a lparam=0x0 result=0x0
          場所 WindowsApplication1.Form1.TextBoxEx1_Validating(Object sender, CancelEventArgs e) 場所 D:\TEST\WindowsApplication1
        userTextBoxEx1:msg=0x8 (WM_KILLFOCUS) hwnd=0x280dee wparam=0xd0d8a lparam=0x0 result=0x0
        TextBoxEx1:msg=0x7 (WM_SETFOCUS) hwnd=0xd0d8a wparam=0x280dee lparam=0x0 result=0x0
userTextBoxEx1:msg=0x202 (WM_LBUTTONUP) hwnd=0x280dee wparam=0x0 lparam=0x90023 result=0x0
------
Validating後、TextBoxEx1に WM_KILLFOCUS が来るのが変です。


WM_LBUTTONDOWNとWM_LBUTTONUPの間で、OnValidatingがキャセンルされたら二回目のOnValidatingが来てもValidatingイベントを
呼ばないようにしてみました。

VBは得意でないので、C#

public class TextBoxEx : TextBox
{
	const int WM_LBUTTONDOWN = 0x0201;
	const int WM_LBUTTONUP=  0x0202;
	static bool IsMouseDown = false;
	static bool canceled = false;
	
	protected override void WndProc(ref Message m)
	{
		if (m.Msg == WM_LBUTTONDOWN) {
			IsMouseDown = true;
			canceled = false;
		}

		base.WndProc(ref m);
			
		if (m.Msg == WM_LBUTTONUP) {
			IsMouseDown = false;
		}
	}

	protected override void OnValidating(System.ComponentModel.CancelEventArgs e)
	{
		if (IsMouseDown && canceled) {
			e.Cancel = true;
		} else {
			base.OnValidating(e);
			canceled = e.Cancel;
		}
	}
}

引用返信 編集キー/
■56289 / inTopicNo.19)  Re[12]: UserControlとValidatingについて
□投稿者/ KK (13回)-(2011/01/07(Fri) 22:34:57)
todo 様
> VBは得意でないので、C#
 違った言語の中で、サンプルまで
 本当にありがとうございます。
 自分なりに、VBに変更してみました。

******************************************************************
Module Module1
    Public IsMouseDown As Boolean = False
    Public Canceled As Boolean = False
End Module

Public Class TextBoxEx
    Inherits TextBox

    Private Const WM_LBUTTONDOWN As Integer = &H201
    Private Const WM_LBUTTONUP As Integer = &H202

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

        If m.Msg = WM_LBUTTONDOWN Then
            IsMouseDown = True
            canceled = False
        End If

        MyBase.WndProc(m)

        If m.Msg = WM_LBUTTONUP Then
            IsMouseDown = False
        End If

    End Sub

    Protected Overrides Sub OnValidating(ByVal e As System.ComponentModel.CancelEventArgs)

        If IsMouseDown And canceled Then
            e.Cancel = True
        Else
            MyBase.OnValidating(e)
            canceled = e.Cancel
        End If

    End Sub
End Class
******************************************************************

>	static bool IsMouseDown = false;
>	static bool canceled = false;
userTextBoxEx1とTextBoxEx1で、共通のフラグかと思い、
大雑把でありますが、Module変数にしてみました。
※あまり行わない方がいいと思いますが、
  別の方法が思いつかなかったもので・・。

教えていただいたサンプルで、Validatingイベントの発生を1回にできました。
本当にありがとうございます。

再度、自分なりにいろいろチェックしてみます。


>todo様
違った言語の自分に、
チェックの仕方等、ご親切に教えていただき
誠にありがとうございます。

自分で、理解できていない関数等を調べて
自分なりに再度理解していきます。

>shu 様
自分のために、
貴重な時間を割いて
教えていただき 本当にありがとうございました。


※皆さんに教えていただいたことを
もう一度自分なりに整理し、そのあとで解決済みをチェックさせていただきたいと思います。

もし、自分のサンプルでお気づきの点等ございましたら
また教えていただければ幸いです。

引用返信 編集キー/
■56293 / inTopicNo.20)  Re[13]: UserControlとValidatingについて
 
□投稿者/ よねKEN (659回)-(2011/01/08(Sat) 00:36:36)
2011/01/08(Sat) 00:38:34 編集(投稿者)
継承元がUserControlでないといけない理由が特になければ、継承元をPanelにしてはどうでしょうか。
UserControlはContainerControlを継承しており、このContainerControlが独自のフォーカス制御を
やっているため、件のような現象が起きます。

●UserControlの継承階層
System.Object 
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Windows.Forms.Control
        System.Windows.Forms.ScrollableControl
          System.Windows.Forms.ContainerControl
            System.Windows.Forms.UserControl

● UserControlから順に派生元クラスに変更して実験してみる
継承元がUserControlだと現象が発生する
   ↓
継承元がContainerControlだと現象が発生する
   ↓
継承元がScrollableControlだと現象が発生しない★

--
ちなみにこのご提案はGoogleで「UserControl フォーカス」で
検索して見つけた情報を元にして追加検証したものです。
#っていうか、魔界の仮面弁士さんの回答まるぱくり(汗)

●参考にした情報
↓同じ現象と思われる質問が別掲示板で過去にあった。でも未解決
ユーザコントールのNETのバグ? - Insider .NET会議室
http://ap.atmarkit.co.jp/bbs/core/fdotnet/17010

↓カスタムコントロールをアクティブにさせないようにするには?
http://hpcgi1.nifty.com/MADIA/vbnet/wwwlng.cgi?print+200711/07110011.txt

引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -