私はWinformsアプリケーションを持っています。これは、他のフォームを起動するフォームを持っています。それを制御フォームと呼んでいます。現在の画面または下半分の上半分にあるかどうかを確認して参照するように、制御フォームを希望します。上半分にある場合は、他のフォームがその下に表示されます。下半分の場合は、他のフォームが上に表示されます。また、このアプリのユーザーは多くの(4-6)画面を持っていることに注意してください。画面の半分を決定する
私の理論は、現在の画面の高さを見て2で割ったところで、これは中間点のY座標を示しています。
私は、次のコードを持っている:
gadgetBase.Show(); // Gadget base is another form
var thisScreen = Screen.FromHandle(this.Handle);
if (this.Location.Y > thisScreen.Bounds.Y/2)
{
// we're in the top half
gadgetBase.Top = this.Bottom + SystemInformation.BorderSize.Height;
gadgetBase.Left = this.Left;
}
else
{
// we're in the bottom half
gadgetBase.Top = this.Top + SystemInformation.BorderSize.Height + gadgetBase.Height;
gadgetBase.Left = this.Left;
}
しかし、thisScreen.Bounds.Y
は常にゼロです。これは、私が正しいプロパティを使用していないことを示しています。私はこれをどうやってやるべきなのかお勧めしますか? (私のアプローチが偉大ではない場合、私はリワークを気にしません)
もし(this.Location.Y
をフォームは常に必ず半分になるのでしょうか?もしそれがハーフウェイラインに跨っていたらどうなりますか? (また、上半分にあるときに何が起こるかを矛盾した結果で議論する2つの文章があるので、タイプミスが疑わしい) –
@damien_the_unbeliever編集、良い点。それが半分の線であれば、いずれかで十分です。コントローラーが上部または下部に非常に近い場合にのみ、問題を回避しようとしています。私は明日の完全な回答コードを掲示します。 – GinjaNinja