したがって、System.Windows.Forms.Control
は、タイプControl.ControlCollection
のControls
プロパティを持っています。私はこのコレクションに小さなサブコントロールの束を持っているフォームのコントロールを持っています。これらのサブコントロールには、データベースのフィールド名であるラベルとテキスト識別子があります。System.Windows.Forms.Control.ControlCollectionのキーに使用されるものは何ですか?
私は戻ってControls
コレクションにアクセスし、名前でコントロールを見つけることができるようにする必要があります。 ControlCollection
にはpublic virtual Control this[string key] { get; }
とpublic virtual bool ContainsKey(string key)
がありますので、私はそれらを見ることができるはずです。
ただし、追加機能(public virtual void Add(Control value)
)はキーストリングを使用せず、追加するのはSystem.Windows.Forms.Control
で、ContainsKey
へのすべてのコールはfalseを返します。 Control
に何かを考え出す
は(のみControl
が渡されたので)キーであることを上書きする必要があり、私は(私は、ルックアップのために使いたいんだ)データベースのフィールド名を返すためにToString()
を上書きしようとしたが、 ContainsKey
は、指定したフィールドのコントロールが存在することがわかっても、依然としてfalseを返します。
this[string key] { get; }
のドキュメントは、重要なパラメータがあると言い、「コントロールコレクションから取得するためのコントロールの名前。」 Control
には、オーバーライドできるNameプロパティはありません。唯一のNameプロパティにはクラス名が含まれています。クラス名は、追加するすべてのコントロールで同じになります。 ContainsKey(string key)
のドキュメントでは、キーパラメータは「キーを特定する」ことを示しています。
あなた自身の質問にお答えいただきありがとうございます。いいえ、いたずらしない! – TheBlastOne
あなたが問題で見るのは、それがどうして落ちたかです。最初の3つの段落を書いた。 ToStringのことを考えて試しました。 4段落を書きました。私が使用している機能に関するドキュメントをチェックしました。 5段落を書きました。最後の段落と答えを書きました... :) –
ネットの結果:愚かなことのための "尊敬のポイント"がたくさんあります。そして、全くそうではありません:-) – TheBlastOne