2012-02-11 18 views
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; 
     } 
    } 

任意の提案や好適符号化技術?

+3

*好ましい*技術は、ウィンドウ/フォームを自動的に配置することです。それでサルをしようとすると、あなたが間違ってしまう可能性が増します。 –

+0

動作するコードがありますが、改善したい場合は、おそらくhttp://codereview.stackexchange.comがより適切かもしれません。 SOはほとんどが「壊れた」コードのためです – Snowbear

+0

@Snowbearありがとう、私はサイトが存在することを知らなかった。 – Josh

答えて

関連する問題