2

ウィンドウの 1 つに SizeChanged イベントがあります。ユーザー コントロールの幅の 1 つが興味深い動作をしているので、SizeChanged イベントでウィンドウの幅を静的に設定することにしました。問題は、サイズ変更イベントでウィンドウのサイズを設定すると、別のサイズ変更イベントが発生することです! ユーザーがウィンドウのサイズを変更できるようにしてから、イベントを 1 回だけ発生させたいと考えています。私が試してみました :

e.Handled = true;

ウィンドウコンストラクターにイベントハンドラーを追加し、サイズ変更イベントでそれを削除します。(これにより、一度しか起動できず、ウィンドウの存続期間中に再度起動することはありません)。何か案は?

4

3 に答える 3

1

プライベートブールを使用し、サイズが変更されたときにその値を変更する必要があります

bool _sizeChanged=false;
void handleResize(Object sender, EventArgs e)
{
  if (_sizeChanged==false)
  {
    // do stuff
  }
   _sizeChanged=true;
}

しかし、その値を別の場所で再度変更する必要があるため、それだけでは十分ではありません。その値を変更しない場合 (たとえば、別の場所で false に変更した場合)、「if」条件を再び通過することはありません。したがって、問題は、その値をどこで変更する必要があるかです。

MouseButtonUpリサイズはマウスで行うので、イベント時に値を変更できると思います。

于 2012-11-28T15:57:47.973 に答える
0

SizeChanged が複数回呼び出される原因となったのは、ウィンドウの XAML の SizeToContent="Width" プロパティであることが判明しました。このプロパティを削除すると問題が解決し、イベントが複数回発生することなくウィンドウのサイズを変更できるようになりました。回答とご意見をお寄せいただきありがとうございます。

于 2012-11-28T16:27:06.103 に答える
0

を使用しbooleanて、イベントを処理するかどうかを決定できます。

private bool m_handleResizeEvent;
private void HandleResize(object sender, EventArgs e)
{
    if (m_handleResizeEvent)
    {
         m_handleResizeEvent = false;
         // perform your resize here
         m_handleResizeEvent = true;
    }
}
于 2012-11-28T15:46:47.917 に答える