web-dev-qa-db-ja.com

ユーザーコントロールとWindowsフォーム

Visual Studio-C#のユーザーコントロールとWindowsフォームの違いは何ですか?

54
Arlen Beiler

非常に簡単に言えば:

ユーザーコントロールは、カスタムで再利用可能なコンポーネントを作成する方法です。ユーザーコントロールには他のコントロールを含めることができますが、フォームでホストする必要があります。

Windowsフォームは、ユーザーコントロールを含むコントロールのコンテナーです。ユーザーコントロールとして多くの同様の属性が含まれていますが、主な目的はホストコントロールです。

51
Bill Martin

これらには共通してlotがあり、どちらもContainerControlから派生しています。ただし、UserControlは子ウィンドウとして設計されており、コンテナに配置する必要があります。フォームは、親のない最上位ウィンドウになるように設計されました。

TopLevelプロパティをfalseに設定することにより、実際にフォームを子ウィンドウに変えることができます。

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        var child = new Form2();
        child.TopLevel = false;
        child.Location = new Point(10, 5);
        child.Size = new Size(100, 100);
        child.BackColor = Color.Yellow;
        child.FormBorderStyle = FormBorderStyle.None;
        child.Visible = true;
        this.Controls.Add(child);
    }
}
21
Hans Passant

Windowsフォームは、ユーザーコントロールのコンテナーです。

4
Ikke

最大の違いは、form.showが異なるウィンドウを表示するのに対し、ユーザーコントロールには親なしでポップアップするような機能がないことです。残りは、Scrollablecontrolから派生したbeindのような両方のコントロールで同じです。

1
sunnytyra