2016-08-14 19 views
0

無効にしたときにフォームのサイズを変更したい場合は、そのフォームのサイズを変更し、アクティブにした場合はリセットし直します。それをリセットするために、私は、MainForm_SizeChangedで設定しているpreferredHeightとpreferredWidthというグローバル変数を持っています(これは、ユーザーが手動でフォームのサイズを変更した場合のものです)。しかし、新しい高さと幅を設定すると、SizeChangedメソッドが呼び出されます。ユーザーがSizeChangedイベントをトリガしたかどうかを区別する方法はありますか?また、私のフォームのサイズをリセットする良い方法はありますか?ありがとう!WPFフォームサイズがユーザーによって変更されましたが、プログラムでは変更されません

private void MainForm_SizeChanged(object sender, SizeChangedEventArgs e) 
    { 
     preferredHeight = MainForm.Height; 
     preferredWidth = MainForm.Width; 
    } 

    private void MainForm_Deactivated(object sender, EventArgs e) 
    { 
     MainGrid.RowDefinitions[3].Height = new GridLength(0); 
     MainGrid.RowDefinitions[4].Height = new GridLength(0); 
     MainForm.ResizeMode = ResizeMode.NoResize; 
     MainForm.Height = 100; 
     MainForm.Width = 100 * imageWidth/imageHeight; 
    } 

    private void MainForm_Activated(object sender, EventArgs e) 
    { 
     MainGrid.RowDefinitions[3].Height = new GridLength(1, GridUnitType.Star); 
     MainGrid.RowDefinitions[4].Height = new GridLength(2, GridUnitType.Star); 
     MainForm.ResizeMode = ResizeMode.CanResize; 
     MainForm.Width = preferredWidth; 
     MainForm.Height = preferredHeight; 
    } 

答えて

1

ユーザーがフォームのサイズを変更すると、フォームにはまだフォーカスがあります。

ユーザーがフォームをクリックすると、フォームのフォーカスが失われます。

したがって、フォームにまだフォーカスがあるかどうかを確認することができます。それがユーザーのサイズ変更であれば、それはあなたの "無効化"サイズ変更であり、それは呼び出しを行ったものです。

関連する問題