ユーザーが最初にビットマップにスキャンできるフォームがあります。スキャンが完了し、ビットマップが読み込まれると、4つのテキストボックスが有効になります。各テキストボックスの横に、「画像から切り取り」というボタンがあります。ユーザーがボタンをクリックすると、ビットマップをクリックしてドラッグし、MODIを使用して選択したテキストを取得できます。
これは、1つの厄介なバグを除いて、完璧に機能します。[画像から切り取り]ボタンをクリックして正方形をドラッグすると、テキストボックスに情報がうまく表示されます。次に、次のテキストボックスをクリックすると非常にうまくいきますが、タブキーを使用してフィールドを離れると、「パラメータが無効です」というメッセージがArgumentException
表示され、コード内のどこにヘルプが表示されません。クラッシュが発生します。フォーム内で問題なくタブ移動できますが、ビットマップをスキャンすると、Tabキーを使用すると10回のうち9回のようにクラッシュします。
これを使用して(デバッグのためだけに)タブキーを上書きしようとしました:
Protected Overrides Function ProcessTabKey(ByVal forward As Boolean) As Boolean
MsgBox("TAB is currently disabled!")
Return False 'Tried True as well, just in case
End Function
...しかし、それでもクラッシュします。
何が問題なのかについて何か提案はありますか?どこからデバッグを開始すればよいかわからないため、どのコードを表示するかわかりません。
編集1
ArgumentException
スローされるスタックトレースは次のとおりです。
- System.Drawing.Image.get_Width()で
- System.Drawing.Image.get_Size()で
- System.Windows.Forms.PictureBox.ImageRectangleFromSizeMode(PictureBoxSizeModeモード)で
- System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)で
- System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e、Int16レイヤー)で
- System.Windows.Forms.Control.WmPaint(Message&m)で
- System.Windows.Forms.Control.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(IntPtr dwComponentID、Int32 reason、Int32 pvLoopData)で
- System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason、ApplicationContext context)で
- System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32理由、ApplicationContextコンテキスト)で
- Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()で
- Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()で
- Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String [] commandLine)で
- 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81のORC_Testing.My.MyApplication.Main(String [] Args)で
- System.AppDomain._nExecuteAssembly(RuntimeAssemblyアセンブリ、String [] args)で
- System.AppDomain.ExecuteAssembly(String assemblyFile、Evidence assemblySecurity、String [] args)で
- Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()で
- System.Threading.ThreadHelper.ThreadStart_Context(オブジェクト状態)で
- System.Threading.ExecutionContext.Run(ExecutionContext executeContext、ContextCallbackコールバック、オブジェクト状態、ブール値ignoreSyncCtx)で
- System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)で
- System.Threading.ThreadHelper.ThreadStart()で
編集2
画像をスキャン/ロードする方法は次のとおりです。
Dim filename As Collection
filename = TwainHandler.ScanImages("c:\scan\", "tif")
Dim ScannedFile As Image = Image.FromFile(filename(1))
PictureBox1.Image = ScannedFile
PictureBox1.Width = ScannedFile.Width
' etc.