2017-05-03 6 views
0

現在、Visual Studio 2012には、フォームごとに共通の設定がいくつかあります(「キャンセル」ボタンと「保存」ボタン、すべてのフォームで変更されますが、同じ名前、フォントサイズ、タイプ、フォームの色など)は、私はすべてのデザインを行うことができます私は多くの時間を節約します単一のウィンドウのフォームと私はそれを編集または変更すると、変更が他のフォームにも反映されている。テンプレートを更新するには?

私はこのフォームを作成するために10個のフォームが必要ですが、私はこのデフォルトのフォーマットを選択し、メニューと基本オブジェクトを既に配置して設計しています。 10のフォームの後、私はボタンを少し動かすことに決めましたが、すべてのフォームに行き、それを動かしたくありません。元の形式に変更してリフレッシュし、すべてのフォームに新しい場所のボタンが表示されます。

私はCan one set the default properties for new WinForms created in Visual Studio?で推奨されるテンプレートを使用しました。しかし、テンプレートで何かを変更すると、テンプレートを使用して作成された他のすべてのフォームでそのポイントに更新されないという問題があります。

私はすでにWinFormのデフォルトフォーマットでInitializeComponentを変更することを考えていましたが、これは推奨されていません。これ以降のエラーはありません。

アイデア?事前

+0

いいえ、何もできません。テンプレートを使用してプロジェクトまたはファイルを作成すると、そのテンプレートは一度オフになります。 –

+0

Visual Forms Inheritanceを見ましたか?必要に応じて基本フォームを作成し、基本フォームから他のすべてのフォームを継承しますか?単なるクラスなので、継承などを使うことができます。 –

答えて

1

ソリューションの継承が機能します。

  • すべて「普通」と「ベース」フォームを作成し
  • があなたの「基本」フォームから継承する新しい「派生」フォームと変更フォームを作成して制御します。

あなたが派生形で「上書き」する必要が塩基の形でいくつかの共通のロジックを持っている場合 - 塩基の形態で仮想メソッドにそれを置く

// Base form 
protected virtual void Close() 
{ 
    // Base logic 
} 

private void CloseButton_Click(object sender, EventArgs e) 
{ 
    Close(); 
} 

// In derived form - just override "Close" method 
protected override void Close() 
{ 
    // custom logic - will be executed when "Close" button clicked 
} 

カスタムコントロールのための空きスペースを残します。派生フォームでデザイナーを介してベースフォームコントロールにアクセスすることはできないためです。

別のアプローチ - モデル - ビュー - ViewModelに(MVVM)
- プロパティを持っている一般的なコントロール(ビュー)を自分のUserControlを導入 - 。ViewModelにのインスタンスを(ViewModelになりますが、「ベース」の設定を変更するために行動ロジックと可能性を含んでいます。
- すべての「派生」フォームにこのユーザーコントロールを追加し、UserControl.ViewModelPropertyをこの特定のフォームのロジックを表すインスタンスに設定します。

あなたの目標の「完全な」コンテキストを知らなくても、より多くを提案するのは難しいですが、一般的なロジックとビューを共有できるフォーム間のメンテナンス可能な関係を構築できると確信しています。

0

おかげではありません、あなたができることは何もありません。テンプレートを使用してプロジェクトまたはファイルを作成すると、そのテンプレートは一度オフになります。手動で編集するか、検索と置換をパターンマッチングやグループ挿入を使用するのに十分強力なテキストエディタを使用する必要があります。

+0

私が説明したことを行うことができるVBには他に何かありますか? –

+0

あなたは私の答えを読んだ? –

+0

ありがとうございました –

関連する問題