2011-02-04 13 views
0

私は1つのコントロールを含むフォームを持っています。パネルはフォームよりもはるかに大きくなります。したがって、フォームのスクロールバーはこのパネルをナビゲートするために使用されます。 Autoscrollフォームのプロパティはtrueに設定されています。問題は、ダイアログウィンドウを表示した後にAutoscrollPositionが開始に設定されていることです。どのようにスクロール位置を保存するためにこの動作を無効にすることができます。フォームの先頭に望ましくない自動スクロール

+0

なぜuは、フォームのサイズを変更して2つのスクロールすることができますので、なぜパネルの自動スクロール –

+0

@Shekhar_Proを使用していないフォームの自動スクロールを使用しているとの回答のためにここを見て表示されますが、これは望ましくありません。 – Peter17

+0

ok winforms ...以前に言及していなかった... –

答えて

2

これを無効にするには、コード内のスクロール位置を手動で設定します。フォームのActivatedイベントとDeactivatedイベントを使用するだけです。

同じ問題とコード

https://stackoverflow.com/questions/2020938/why-does-scrolling-position-change-after-refocusing-the-form/2022561#2022561

+0

応答と役に立つリンクありがとう。しかし、不思議なことに、ActivatedとDeactivatedのイベントは、MDIアプリケーションで別のウィンドウを選択した場合にのみトリガされます。しかし、ダイアログを表示してもそれらのイベントは発生しません。私は次のコードでそれを確認しました:Deactivate + =(s、e)=> { MessageBox.Show( "Deactivated"); }; 有効+ =(s、e)=> { MessageBox.Show( "Activated"); }; – Peter17

+0

あなたがそれをテストする方法は、フォーム自体に上記のコードを置くことであり、その方法では、MessageBoxがフォーカスを奪うようにActivateイベントを受け取ることはありません。 )フォームを無効にします。適切にテストするには、メッセージボックスを表示するボタンのクリックイベントでテストします。 –

+0

@Micha私はそれをチェックして、ダイアログボックスを開く(私はOpenFileDialogを試しました)フォームを非アクティブにします。私の答えのリンクのコードはうまくいくはずです。 –

関連する問題