私はC#は初めてですが、コーディングは初めてではありません(ほぼ20年間行っています)。また、Panelから継承する、作成しているカスタムコントロールのプロパティに問題があります。プロパティを配置すると、Designerプロパティリストに表示され、設定することもできますが、小さなアプリケーションを実行すると、これらのプロパティ値が使用されていないようです。プログラムでプロパティを変更した場合も同じです。エラーは発生しませんが、コントロールは何も実行しません。適切に設定されていないようです。しかし、私がクラスでプログラム的にそれを行う場合、彼らは機能します。私の推測では、プロパティの設定/取得の内容が正しくありません。私がそれを行っている方法の次のコードチャンクを参照してください:
public class ColorStrip : Panel
{
// properties
// ------------------------------------------
// size of color clusters (boxes)
private int _clusterSize = 20;
// controls if show the buttons panel
private Boolean _showButtons;
// property setters/getters
// ------------------------------------------
// clusterSize...
public int clusterSize
{
get { return _clusterSize; }
set { _clusterSize = value; }
}
// showButtons...
public Boolean showButtons
{
get { return _showButtons; }
set { Console.Write(_showButtons); _showButtons = value; }
}
....
したがって、私のフォームでは、たとえばloadや、どこかのクリックイベントでも、colorStrip1.showButtons=falseを指定すると; またはcolorStrip1.showButtons=true; 何でも(colorStrip1は、コントロールをデザインモードのフォームに配置した後のインスタンス名になります)...console.writeは常に「false」と言います。デザインプロパティリストで「true」として設定しても、設定された値は反映されません。デフォルトでtrueに設定しても、外部で変更されることはありません。何か案は?どのメソッドも、外部で解決された新しいプロパティ値を取得しません。明らかに、ゲッター/セッターは機能していません。クラスの外でプロパティを設定または取得する方法が正しく行われていないようです。それは魅力として、その中でのみ機能します...どんな助けでも...とても感謝しています!
乾杯
リチウム
解決策を明確にするためのps:
この場合のプロパティの設定は、コンストラクター内で新しい設定値を使用しようとしていたため機能しませんでした。これは、物を構築しているため、新しい値を取得できないようです。デザインモード>プロパティエディターまたはオブジェクトの外部のコードで、たとえば親フォームのloadイベントでプロパティ値を変更すると、変更されますが、コンストラクターを除くすべてのメソッドで読み取り可能です。もちろん:)