2012-04-16 11 views
0

ガントチャートであるDBIスケジュールコントロールを使用しているときにランダムなクラッシュが発生しています。以下はスタックトレースです。DBIを使用するとクラッシュするガントチャートをスケジュールする

************** Exception Text ************** 
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and  less than the size of the collection. 
Parameter name: index 
    at System.Collections.CollectionBase.System.Collections.IList.get_Item(Int32 index) 
    at Dbi.WinControl.Schedule.ScheduleCollection.get_Item(Int32 nIndex) 
    at Dbi.WinControl.Schedule.dbiSchedule.GuideLineBarSnap(Point ptPoint) 
    at Dbi.WinControl.Schedule.dbiSchedule.MoveAllTimeBar(Point ptPoint, MouseEventArgs e) 
    at Dbi.WinControl.Schedule.dbiSchedule.OnMouseMove(MouseEventArgs e) 
    at System.Windows.Forms.Control.WmMouseMove(Message& m) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 

他にもこのような問題がありますか?

+0

はい!私は今問題を抱えていますが、解決策はありません。あなたはそれを理解したことがありますか? – BCarpe

答えて

0

私のエラーはスケジュール通りに次のようにして現れた:
1.任命
2.ダブルクリックして、予定を作成します(これはあなたがいくつかのことを行うことが許可され、ウィンドウを育て、のいずれかが削除しました任命)
3.予定を削除
4.保存
5. ERROR

私はこの問題は、それがコールバックを通じて起こっている間、スケジュール管理だけでそれがでて働いているの任命を追跡していることだったと思いますそれに関連付けられたインデックス。予定が削除されると、コールバックチェーンがOnMouseUpイベントに移動します(OnMouseMoveイベントに似ています)。ダブルクリックイベントで使用されたインデックスで予定が見つからない場合、取得したエラーと同じエラーが発生します。

私の解決策は残念ながらちょっとしたハックですが、アプリケーションをすばやく実行する必要がありました。ダブルクリックイベントでは、削除が発生した後、古いものの代わりに予定を追加しましたしかし、標準のNULL日付の開始日と終了日(これはちょうどダミーの予定であることを示すフラグとして)。その後、基本クラスのOnMouseUpイベントを呼び出したOnMouseUpイベントをオーバーライドしてから、ダミーの予定を検索して削除しました。

あなたが最初にこれを投稿したのはほぼ1年前ですが、それはおそらくあなたにとって有益ではありませんが、うまくいけば誰かを助けるでしょう。

+0

このコントロールを使用していないので、確認できません。あなたの応答をありがとう。 – AledH