35

1 つずつ変更せずに、すべてのフォームに同じアイコンを設定する方法はありますか? GlobalAssemblyInfoソリューション内のすべてのプロジェクトをセットアップするときのようなものです。

4

8 に答える 8

58
  1. プロジェクト プロパティ > アプリケーション > アイコンとマニフェスト > *.ico ファイルを参照し、そこに追加します。

  2. _Loadフォームのコンストラクターまたはイベントで、次を追加するだけです。

    this.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath);
    
于 2013-05-15T07:36:42.860 に答える
26

1 つのオプションは、コンストラクターで Icon を設定する共通の base-Form から継承することです (おそらく resx から)。別のオプションはPostSharpかもしれません-AOP経由でこれを行う(.Iconを設定する)ことが可能であるように思われます。しかし、些細なことではありません。最後に、単純なユーティリティ メソッド (おそらく拡張メソッド) を使用して同じことを行うことができます。

Ctrl何よりも、最初のオプションを使用すると、 + H(すべてを置換) from: Formまたは: System.Windows.Forms.Formtoのリスクが生じる可能性があります: MyCustomForm

于 2008-10-09T20:21:50.683 に答える
9

Marcの推奨に加えて、フォームを含む/呼び出す実行中のアセンブリのアイコンをフォームに自動的に継承させたい場合があります。
これは、継承されたフォームに次のコードを追加することで実行できます。

public MyCustomForm()
{
    Icon = GetExecutableIcon();
}

public Icon GetExecutableIcon()
{
    IntPtr large;
    IntPtr small;
    ExtractIconEx(Application.ExecutablePath, 0, out large, out small, 1);
    return Icon.FromHandle(small);
}

[DllImport("Shell32")]
public static extern int ExtractIconEx(
    string sFile,
    int iIndex,
    out IntPtr piLargeVersion,
    out IntPtr piSmallVersion,
    int amountIcons);
于 2008-10-09T23:44:23.550 に答える
2

ここで継承を使用するかどうかわからなかったので、拡張メソッドを使用しました。

public static class MyExtensionMethods
{
    public static void SetAppIcon(this Form form)
    {
        form.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath);
    }
}

次に、任意のフォームのコンストラクターで:

this.SetAppIcon();

注: ネットワーク上の場所からアプリケーションを実行しようとすると、クラッシュが発生します。

于 2015-06-01T14:52:17.173 に答える
1

コンストラクターで設定する代わりに、プロパティをオーバーライドしOwner、所有者フォームのアイコンを取得します。

public new Form Owner {
    set {
        this.Icon = (value == null ? null : value.Icon);
        base.Owner = value;
    }

    get {
        return base.Owner;
    }
}
于 2011-09-04T10:36:15.883 に答える
-1

MS VS設計者が、フォームから直接派生していないフォームを処理できるかどうかはわかりません。そうでない場合は、メインフォームのアイコンを他のすべてのフォームにコピーしてみてください。フォームコレクション内のフォームごとに

form.icon = MainFrom.Icon

または、おそらく各フォームの_Loadedイベントで:

Icon = MainFrom.Icon
于 2008-10-14T03:54:00.287 に答える