0
私は最近、自分のプロジェクトでうまくいくソリューションを思いついた初心者ですが、コードを改善する方法を常に探しています。私のフォームを整理するよりエレガントな方法はありますか?
本質的に、私はポップアップした設定フォームを持っています。私はそれをメインフォームの横に置く方法を模索していましたが、メインフォームの上に部分的に現れていませんでした。私はこれを考え出しましたが、の動的なではありません。なぜなら4つの異なる場所しかチェックしていないからです。ここで
は私が持っているものです。
private void Place_Form(Form formToPlaceNextTo, Form formToPlace)
{
Point alignRightTop = new Point(m_parent.Location.X + m_parent.Width, m_parent.Location.Y);
Point alignRightBottom = new Point(m_parent.Location.X + m_parent.Width, (m_parent.Location.Y + m_parent.Height) - this.Height);
Point alignLeftTop = new Point(m_parent.Location.X - this.Width, m_parent.Location.Y);
Point alignLeftBottom = new Point(m_parent.Location.X - this.Width, (m_parent.Location.Y + m_parent.Height) - this.Height);
if (Screen.FromControl(formToPlace).WorkingArea.Contains(new Rectangle(alignRightTop.X, alignRightTop.Y, this.Width, this.Height)))
{
this.Location = alignRightTop;
return;
}
if (Screen.FromControl(formToPlace).WorkingArea.Contains(new Rectangle(alignRightBottom.X, alignRightBottom.Y, this.Width, this.Height)))
{
this.Location = alignRightBottom;
return;
}
if (Screen.FromControl(formToPlace).WorkingArea.Contains(new Rectangle(alignLeftTop.X, alignLeftTop.Y, this.Width, this.Height)))
{
this.Location = alignLeftTop;
return;
}
if (Screen.FromControl(formToPlace).WorkingArea.Contains(new Rectangle(alignLeftBottom.X, alignLeftBottom.Y, this.Width, this.Height)))
{
this.Location = alignLeftBottom;
return;
}
}
任意の提案や好適符号化技術?
*好ましい*技術は、ウィンドウ/フォームを自動的に配置することです。それでサルをしようとすると、あなたが間違ってしまう可能性が増します。 –
動作するコードがありますが、改善したい場合は、おそらくhttp://codereview.stackexchange.comがより適切かもしれません。 SOはほとんどが「壊れた」コードのためです – Snowbear
@Snowbearありがとう、私はサイトが存在することを知らなかった。 – Josh