2016-09-19 8 views
1

Windowsフォームでは、このフォームのすべてのボタンをカスタムボタンCustomNamespace.controls.customButtonに置き換えますクラスsystem.windows.controls.buttonから。.NET - 元のコントロールのプロパティ/イベントを維持しながら、既存のコントロールをカスタムコントロールに置き換えます。

現在のところ、私が考えることができる唯一の正しい方法は、元のボタンを削除し、カスタマイズされたボタンを追加し、手動でプロパティを1つずつ変更することです。ただし、複数のボタンを異なるプロパティまたはイベントで置き換える必要がある場合は、これが面倒です。私はそのままその性質を維持しながらやって考えることができます

もう一つの方法は、.designer.csファイルに... = new CustomNamespace.controls.customButton()... = new system.windows.controls.button() を交換しています。できるだけ多くの他の優れた解決策がない限り、私はnot to go that wayを好むでしょう。

+3

場合によっては、.Designer.csファイルの編集に関するアドバイスを無視しても問題ありません。あなたがやっているのはコントロールのタイプを置き換えている場合で、デザイナーが生成したフィールドとインスタンス化の両方を変更したことを確認した場合、デザイナーを使ってカスタムコントロールをフォームにドラッグしたのと同じようになります通常の 'Button'に上書きされることはありません(あなたがあなたが参照した投稿の警告が表示されます)。 –

+0

あなたの質問はあまりにも広すぎます。何かを試して問題を起こしても問題がなければ、それについて具体的に記述してください。それ以外の場合、このリファクタリングタスクにはさまざまな方法があります。 –

+0

@PeterDunihoもっと具体的にすることができるかどうか分かりません。そして、はい、私がしたいのは、そのプロパティを同じに保ちながら、元のコントロールをカスタマイズされたものに置き換えることでした。 – Mark

答えて

0

@Peter Dunihoさんのアドバイスを受けてから、既存のコンポーネントを見つけて置き換えるだけです。既存のコンポーネントを削除してカスタマイズしたコンポーネントを追加するのと同じ効果があるため、.desginer.csファイルに存在するコンポーネントを置き換えてください。

上記の質問のコメント欄の他の人にも感謝します。

関連する問題