2010-11-29 9 views
6

私のアプリケーションから奇妙な例外が発生しました。私は開発マシン(同じOS + VS2010)をアップグレードし、再びソフトウェアのデバッグを試みるまでうまくいっています。これは私が得る例外です:WPF - 幅と高さが負でない必要があります

幅と高さは負でなければなりません。ここ

スタックトレース:

at System.Windows.Size..ctor(Double width, Double height) 
    at System.Windows.Window.SourceWindowHelper.GetHwndNonClientAreaSizeInMeasureUnits() 
    at System.Windows.Window.GetHwndNonClientAreaSizeInMeasureUnits() 
    at System.Windows.Window.MeasureOverrideHelper(Size constraint) 
    at System.Windows.Window.MeasureOverride(Size availableSize) 
    at System.Windows.FrameworkElement.MeasureCore(Size availableSize) 
    at System.Windows.UIElement.Measure(Size availableSize) 
    at System.Windows.ContextLayoutManager.UpdateLayout() 
    at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg) 
    at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork() 
    at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks() 
    at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget) 
    at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget) 
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 
    at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) 
    at System.Windows.Threading.DispatcherOperation.InvokeImpl() 
    at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state) 
    at System.Threading.ExecutionContext.runTryCode(Object userData) 
    at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Windows.Threading.DispatcherOperation.Invoke() 
    at System.Windows.Threading.Dispatcher.ProcessQueue() 
    at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 
    at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 
    at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) 
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 
    at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) 
    at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) 
    at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) 
    at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) 
    at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) 
    at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) 
    at System.Windows.Threading.Dispatcher.Run() 
    at System.Windows.Application.RunDispatcher(Object ignore) 
    at System.Windows.Application.RunInternal(Window window) 
    at System.Windows.Application.Run(Window window) 
    at System.Windows.Application.Run() 
    at AdvancedConsole2._0.App.Main() in F:\Projects\hitech\AdvancedConsole2.0\trunk\AdvancedConsole2.0\AdvancedConsole2.0\obj\x86\Debug\App.g.cs:line 0 
    at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
    at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 
+0

幅と高さの値は何ですか?デバッガに表示させることはできますか? – chrisaycock

答えて

8

は、あなたの幅と高さを確認する必要があります。それはどちらかまたは両方が否定的であるよりもかなり安全な賭けです。

これは価値があるため、このと変更されたモニタ解像度で問題になる可能性があります。これは確かだとは言いませんが、私はたくさんのお金を賭けています。あなたの画面サイズからウィンドウサイズを引いて、それを中心にするために2で割る単純な計算を行う人もいます。

ウィンドウが画面より大きくなった場合は、位置やサイズが負の値になることがあります。

幅と高さを計算するコードを見ることなく、これはもちろんすべての推測です。私はそれを投稿したり、一時的にコードを追加して何らかの形で出力して、何が起こっているかを見ることができます。

+0

2番目のポインターが点滅します。私はリサイズイベントをリッスンするカスタムコントロールを持っていて、結果は否定的でした。 +1 –

1

私はこれを信用したくありませんが、paxdiabloは表示上の問題を示唆しています。私が彼をサポートするとコメントできたら、私は持っていたが、50人の担当者が必要だった。

ここに問題がありました:

私は最近、3つのモニタを使用し始めました。私のラップトップと2台の22インチモニター。

正常に動作するようにするには、画面の解像度ページでモニターを移動しなければなりませんでした。そうするうちに、私は誤って一方のモニターを他のモニターよりも高く動かしました。 Visual Studioは、他の2つと整列していないモニタでクラッシュします。

* FIX *

  1. 右クリック
  2. 選択画面の解像度
  3. は、それらのすべてが 上部に並んでいるので、モニタ画面を移動することを確認しますデスクトップ上。
  4. 適用し、[OK]をクリックします。
関連する問題