問題タブ [visual-inheritance]
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.
forms - DB コンポーネントまたは新しいコンポーネントの視覚的な継承?
ADOModule、SDACModule、AstaModule の 3 つの異なる DataModule があります。使用する DB コンポーネント (ADO、SDAC、Asta) を除いて、すべて同じです。
これらの DataModule はすべて同じ仕事をしますが、異なるコンポーネントを使用します。つまり、すべての内部選択と実行は同じです。
私が探しているのは、このすべての DataModules を 1 つの BaseDataModule に結合し、ADOModule、SDACModule、および AstaModule のそれぞれを強制的に BaseDataModule から継承させる方法です。
メソッドとプロパティを継承するのは簡単だと思いますが、コンポーネントから継承するのは初めてです。そうするための良い方法はありますか?プロジェクトの目標: コーディングとコピーと貼り付けを最小限に抑えます。
c# - ベース BindingSource を派生フォーム データソースとして使用する
「BaseSource」という名前Form
のパブリック プロパティを持つベースがあります。BindingSource
そのDataSource
プロパティは、ビジネス オブジェクト タイプに設定されます。
そこから派生フォームを作成すると、デザイナで「BaseSource」にアクセスでき、派生フォームのコントロールをビジネス オブジェクトのプロパティにバインドできると考えました。
BindingSource
デザイナーのコンポーネント トレイにドラッグされた他のオブジェクトと同じように、デザイナーが "BaseSource" インスタンスを参照できるようにするために、何か特別なことをしなければなりませんか?
アップデート:
以下のコメントに記載されているアイデアを試してみましたが (フィードバックに感謝します)、残念ながらうまくいきませんでした。Visual-studio-2013と 2 つのプロジェクトを使用しました。1 つは基本フォームとビジネス オブジェクト クラスを保持し、もう 1 つは派生フォームを保持します。基本フォームは、タイプ のBaseBindingSourceBindingSource
という名前の保護されたプロパティを公開します。ベース フォームのコンストラクターで、そのベース バインディング ソースのDataSource
プロパティを の新しいインスタンスに設定しますList<BusinessObject>
。プロジェクトは問題なくコンパイルされますが、派生フォームのデザイナーでは、使用可能なデータ ソースとしてBaseBindingSourceにアクセスできません。
このプロパティを公開しても役に立ちませんでした。
c# - ベース UserControl の修飾子を保護に設定すると、Visual Studio がクラッシュする
ユーザー コントロール クラスとから派生しBaseUserControl
たクラスがあります。どちらも、ソリューションを再構築した後も、Visual Studio Designer に正しく表示されます。DerivedUserControl
BaseUserControl
にBaseUserControl
は、protected
ラベルとその他のprotected
コントロールがあります。派生コントロール用に非表示にしたかったこのラベル。DerivedUserControl
そこで、 で使用されていないことを保証するために、ユーザー コード ファイルとデザイナー コード ファイルでその名前を検索しましたがDerivedUserControl
、出現は見つかりませんでした。次に、このラベルの修飾子をBaseUserControl
fromprotected
のデザイナーで非表示に設定private
します。他のコントロールやコード ファイルは変更していません。
次に、ソリューションを再構築し、 の設計者に見せたいと思いDerivedUserControl
ます。しかし、Visual Studio がクラッシュしました。
protected
そのため、 のデザイナー コード ファイルで、ハンドごとのラベル修飾子を にリセットすることで問題を解決しようとしましたBaseUserControl
。しかし、Visual Studio を再構築しても、.NET のデザイナーを開くと、常にクラッシュしDerivedUserControl
ます。
Microsoft Visual Studio Ultimate 2012 バージョン 11.0.61030.00 Update 4 と Microsoft .NET Framework バージョン 4.5.50938 を持っています。
この問題を解決するためのアイデアはありますか?
c# - WinForms MDI 継承フォームは、親で異なるプロパティ値を持っていますか?
従来の winforms アプリケーションのメンテナンスを行っています。このプロジェクトはフォームの継承を使用しているため、私の仕事ははるかに簡単になりますが、奇妙な問題があります。設定は次のとおりです。
FormBase : Form
FormBaseList : FormBase
FormClientList : FormBaseList
私が今抱えている問題は、プロパティ WindowsState にあります。
新しい FormClientList を作成します。
最大化ボタンをクリックすると、最大化されます。
これで、FormClientList に (デバッグ目的で) ボタンがあり、プロパティ WindowState の値が表示され、予想どおり、最大化された状態で返されます。
FormBaseList には、このプロパティの値を知る必要があるコードがいくつかありますが、ここでは、最大化ではなく、常に通常を返します。コードは、別のフォームを作成する datagridview のダブルクリックにあります。
したがって、このフォームのインスタンスは、テストコードを実行するクラスに応じて、このプロパティの値が異なるようです。
これを修正するにはどうすればよいですか?
c# - 親フォームからコントロールを継承する C# 子フォーム
アプリケーションの編成方法は、基本フォームと、それを継承する複数の子フォームがあります。UI コントロールとして定義されたボタンもあります。UI コントロールを基本フォームに追加して、すべての子フォームもそのコントロールを持つことができるようにします。ただし、コントロールはすべての子フォームで同じでなければならないため、個々の子フォームをすべて台無しにしたくありません。これまでに行ったこと: baseFrom.cs のデザイナーにコントロールを追加しました。これにより、コントロールのすべてのプロパティを一覧表示する基本フォームに InitializeComponent() 関数が作成されました。基本フォームのコンストラクターで InitializeComponent を呼び出してみましたが、それでもどの子フォームにもコントロールが表示されません。ここで何が欠けていますか?