問題タブ [system.componentmodel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# Windows.Form の使用とコンパイル
C# で GUI のコーディングに取り組んでいます。この簡単なチュートリアルに従って開始します。コンパイルするには、System.Windows.Forms.DLL System.Drawing.DLL を参照する必要があるので、次のように入力します。
ただし、次のようなエラーが発生します。
既に「c:\Windows\Microsoft.NET\Framework\v4.0.30319」をパスに追加しています。すでに持っているのに、なぜそれを参照するように言われるのかわかりません。
c# - Properties.Settingsを適切に使用する方法は?
settings.settings
ソリューション内の他のプロジェクトからアクセスしたいファイルを含む、ユーティリティと呼ばれるプロジェクトがあるVisualStudio2010を使用しています。
別のプロジェクトでは、ユーザーがを使用してWindowsフォームの設定を管理できるようにしますPropertyGrid
。また、設定を使用してカスタマイズしたいと思いSystem.ComponentModel
ます。動作したファイルComponentModel
などで設定を適用しようとしましたが、ファイルのコメントにあるように、再生成するとそのファイルに変更が加えられます。DescriptionAttribute
Settings.Designer.cs
だから私の質問は次のとおりです:
Properties.Settings
別のプロジェクトからにアクセスするにはどうすればよいですか?- ファイル
PropertyGrid
を変更せずにをカスタマイズするにはどうすればよいですか?Settings.Designer.cs
- 前述のように、ユーザーにフォームから設定を管理させます。ただし、ユーザーが[キャンセル]ボタンを押したときに値を復元したい。それ、どうやったら出来るの?
c# - VisualStudioによるコンポーネント派生クラスの処理をオーバーライドする
クラスをコンポーネントではなく通常のクラスとして扱いたいことをVisualStudioに伝える方法はありますか?私のクラスは次のように宣言されています:
WebClient
から派生しているのでSystem.ComponentModel.Component
、VisualStudioはそれがコンポーネントであると想定していると思います。そのため、ソリューションエクスプローラーでファイルをダブルクリックすると、コードではなくデザイナー画面が表示されます。さらに、上記の宣言の前に別のクラスを追加すると、ソリューションエクスプローラーでファイルをダブルクリックすると、「クラスWebDavClientは設計できますが、ファイルの最初のクラスではありません」というエラーが表示されます。
いずれの場合も、私はこのクラスを通常のクラスとして扱いたいだけであり、デザイナーの表面は決して必要ありません。Visual Studioのデフォルトの動作をオーバーライドする方法はありますか?
c# - タイプ IListSource の AttributeProvider は何をしますか?
このプロパティを含むユーザー コントロールがあります。
この属性はプロパティにどのように影響しますか? (デザイナーのきれいなコンボ ボックスに加えて)。
IListSource または IEnumerable のいずれかを実装する値のみを受け取るようにプロパティを強制していますか?
属性効果を説明する BCL のコード スニペットを見つけてもらえますか?
ソース:
AttributeProviderAttribute クラス
IListSource インターフェイス
方法: Windows フォーム コントロールに属性を適用する
c# - 実行時にプロパティレベルの属性をTypeDescriptorに追加するにはどうすればよいですか?
オブジェクトのプロパティにカスタムのPropertyGrid中心の属性を追加して、より豊富な編集を提供し、いくつかの値を非表示にしてカテゴリにグループ化します。これは、使用しているクラスがそのような機能を提供せず、何もできないためです。それについて。
実際、コードを生成するのはMSのアプリケーション設定用であるため、プロパティごとにコードを拡張することはできません。私の他の質問を参照してください:RuntimeAppSettings.settingseditorダイアログ
.net - 親のプロパティの DefaultValue をオーバーライドする
一部のプロパティのDefaultValue属性の値をオーバーライドすることを目的として、Control を継承しています。ただし、これを行うには、次のように、親クラスのプロパティに「プロキシ」を作成するボイラープレートを追加する必要があります。
私の質問は、これを使用せずに DefaultValue 属性の値をオーバーライドするより良い方法はありますか? Visual Studio フォーム デザイナーから使用可能/表示可能である限り。
c# - 設計時の表現
設計時にアイテムを動作させることに興味がありますが、達成したいことを達成できるかどうかはわかりません。新しい Web パーツであるchartを作成しました。この Web パーツには、EditorPart を介して構成可能な多数のプロパティを持つ単一のChartSettingsがあり、設定内には多数のSeriesSettingsがあります。
Chart には Personalizable としてマークされた ChartSettings があるため、シリアル化されます。これは Web 上で正常に機能し、設定は保持され、正しく変更および復元できます。ただし、SharePoint デザイナーなどの別のツール内でページを開くと、変換が原因でエラーが発生し始めます。出力 html は漠然と次のようになります。
MyNamespace.ChartSettings は、ChartSettings のインスタンスに変換できません。これは、プロパティの TypeConverters で回避でき、コンバーター内でシリアル化などを使用して、次のように生成できます。
ただし、SharePoint デザイナーなどのツールの html で実際に達成したいことは次のとおりです。
これが可能かどうかは誰にもわかりますか? もしそうなら、これを達成する方法は次のとおりです。
- [TypeConverter(typeof(ExpandableObjectConverter))]
- [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
- [コンテンツ プロパティ]
編集
私はほとんどそこにたどり着きました:
これは私に与えます:
それよりも
c# - System.ComponentModel の操作
コンテナー/コンポーネント モデルが C# でどのように相互作用するかを理解するのに少し苦労しています。コンテナとコンポーネントに関する情報を持つサイトオブジェクトがコンポーネントにどのように含まれているかを取得します。しかし、次のコードがあるとします。
これは問題なく動作し、コンテナ (エンティティ) とその中に含まれるコンポーネント (位置) を定義します。
ただし、 を呼び出すp.Site.Container
と、エンティティが返されますが、IContainer として返されます。つまり、(Console.WriteLine(p.Site.Container as Entity).Foo);
Foo にアクセスしたい場合は、明示的に何かを行う必要があります。これはかなり面倒そうです。
私は何かが足りないのですか、それとも私がやりたいことをするためのより良い方法はありますか?