問題タブ [controlcollection]

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.

0 投票する
4 に答える
6261 参照

asp.net - C#ControlCollection拡張機能GetAllTextboxes

ControlCollectionでtexboxのみを取得するにはどうすればよいですか?

私は試してみます:

しかし、次のエラーが発生しました:タイプ'WhereEnumerableIterator`1[System.Web.UI.Control]'のオブジェクトをタイプ'System.Collections.Generic.IEnumerable`1[System.Web.UI.WebControls.TextBox]にキャストできません'。

Asp.Net 3.5をC#で使用しています

0 投票する
5 に答える
7134 参照

c# - 本質的にIEnumerableではないコレクションを列挙していますか?

階層オブジェクトを再帰的に列挙し、いくつかの基準に基づいていくつかの要素を選択する場合、「フラット化」してから Linq を使用してフィルタリングするなどの手法の例が多数あります。

リンクテキスト

しかし、Form の Controls コレクションや TreeView の Nodes コレクションのようなものを列挙する場合、IEnumerable である (拡張メソッドへの) 引数が必要なように見えるため、これらの種類の手法を使用できませんでした。 collection : SomeForm.Controls を渡すとコンパイルされません。

私が見つけた最も有用なものはこれでした:

リンクテキスト

これにより、Linq で使用できる IEnumerable の結果を持つ Control.ControlCollection の拡張メソッドが得られます。

上記の例を変更して、TreeView のノードを問題なく解析しました。

これは、拡張メソッドを使用して現在書いている種類のコードです。

そして、制約が渡される場所でこれを行うためのよりエレガントな方法があるかもしれないと思います.

そのようなプロシージャをジェネリックに定義できるかどうかを知りたいので、実行時にコレクションのタイプと実際のコレクションをジェネリックパラメーターに渡すことができるため、コードはかどうかに依存しませんそれは TreeNodeCollection または Controls.Collection です。

また、Linq で使用できる形式で TreeNodeCollection または Control.ControlCollection を取得するために、2 番目のリンク (上記) に示されている方法よりも他の方法 (安い? 速い?) があるかどうかも知りたいと思います。

最初にリンクされた SO 投稿 (上記) の「SelectMany」に関する Leppie のコメントは、手がかりのようです。

SelectMany を使った私の実験は次のとおりです。:)

ポインタに感謝します。私は数時間を費やして、これらの領域に触れている SO の投稿をすべて読み、「y コンビネーター」などの異国情緒をとりとめのない道を歩んできました。「謙虚な」経験、私は付け加えるかもしれません:)

0 投票する
3 に答える
1100 参照

c# - Microsoft は、すべてのコレクションを LINQ で使用できるようにする予定はありますか?

私はしばらく LINQ を使用してきました (そして楽しんでいます) が、.NET に特化したコレクション (DataRowCollection、ControlCollection) に出くわすとスピードバンプにぶつかったように感じます。これらの特殊なコントロールで LINQ を使用する方法はありますか? もしそうでない場合、Microsoft はフレームワークの次のリリースでこれに対処すると思いますか? それとも、これらを LINQ 以外の方法で反復処理するか、コレクションからアイテムを自分で LINQ 対応のコレクションにプルする必要がありますか?

0 投票する
2 に答える
3954 参照

c# - ASP.NET カスタム コントロールで複数のコントロール コレクションをレンダリングする

次の構造を持つカスタム WebControl を作成しました。

コントロールには、'Contents' と 'Footer' の 2 つの ControlCollection プロパティが含まれています。複数のコントロール コレクションでコントロールを構築しようとしたことはありませんが、次のように解決しました (簡略化):

ただし、適切にレンダリングされているようですが、プロパティ内にasp.netラベルと入力コントロールを追加すると機能しなくなります(上記のasp.netコードを参照)。私はHttpExceptionを取得します:

ラベル 'KeywordLabel' に関連付けられている ID 'KeywordTextBox' のコントロールが見つかりません。

コントロールコレクションのテキストボックスの前にラベルが表示されるため、ある程度理解できます。ただし、デフォルトのasp.netコントロールでは機能しますが、なぜこれが機能しないのですか? 私は何を間違っていますか?1 つのコントロールに 2 つのコントロール コレクションを含めることさえ可能ですか? 別の方法でレンダリングする必要がありますか?

返信ありがとうございます。

0 投票する
2 に答える
2415 参照

c# - C#を使用して、controlcollectionからコントロールのコレクションを再帰的に取得する

現在、再帰的なコントロールコレクション(リピーター)から動的に作成されたコントロール(チェックボックスとドロップダウンリスト)のコレクションを抽出しようとしています。これは私が使用しているコードです。

次の行で問題が発生しています。

エラーが発生します...

何か案は?

0 投票する
4 に答える
2113 参照

c# - 複数のControlCollectionsでForeach

Windowsフォームにタブコントロールがあり、2つの異なるタブの各要素を繰り返し処理したいと思います。ファイルを開くときは両方の要素をすべて有効にし、ファイルを閉じるときはすべて無効にします。

ただし、コントロールは配列やリストではなく、ControlsCollectionにあるため、これを実現する方法がわかりません。少し前にforeachステートメントについて質問し、ラムダについて少し学びましたが、ここでどのように適用できるかわかりません。

これが私が持っているものです:

これは、1つのforeachステートメントで可能ですか、それとももっと簡単ですか?

0 投票する
0 に答える
501 参照

asp.net - ASP.NET 設計時にページ コントロール コレクションを取得する

RenderControl メソッドを使用して (UITypeEditor で) デザインタイムに Web.UI.Page から HTML をキャプチャしようとしているときに、サーバー コントロールのみがレンダリングされていることに気付きました。

したがって、次の aspx ページが与えられます。

RenderControl メソッドは、「label1」、「MyControl1」、および「Button1」をレンダリングします。フォーム内の head とすべての div はすべて無視されます。

設計時にページのコントロール ツリーを確認することにしたところ、次のような結果が得られました。

これは実行時にどのように見えるかです:

ここで何が起こっているのですか?

0 投票する
1 に答える
517 参照

c# - ControlCollection.Itemはどのように機能しますか?

英語が下手でごめんなさい。

コードを使用して、多数の(「大量」ではない!)コントロールを作成および管理する必要があります。それらを作成してイベントをリンクする方法を知っています。問題は、追加されたコントロールへの将来のアクセス方法です。

どのプロパティがより効果的ですか?ControlCollection.Item[intインデックス]またはControlCollection.Item[文字列キー]?

Item [int]の時間計算量はO(1)でなければならず、Item [string]の時間計算量はO(n)でなければならないと思います。正しいですか?

0 投票する
2 に答える
7297 参照

c# - コントロール コレクションからアクセスすると、runat="server" div によって System.Web.HttpException が発生する

runat="server" の div があります。div はパネルに含まれており、div 内にはいくつかのコントロールがあります。次のように、「ClearControlsInPanel()」メソッドを実行すると、div の外側 (パネル内) のすべてのコントロールがクリアされます。

div に到達すると、そこにコントロールが表示されないため、それらのコントロールはクリアされません。皮肉なことに、まったく同じことについて投稿した人を見つけました。なぜ runat=server を div タグに追加すると、コントロール コレクションで 'System.Web.HttpException 型の例外がスローされるのですか? しかし、本当の解決策や説明がないまま、スレッドは終了します。

完全な例外は次のとおりです。

これは runat サーバー div のままである必要があり、パネルに変更できないと想定してください。(パネルに変更することで解決することはほぼ確実ですが、これを runat サーバー div にする必要がある他の要件があります (長い話))。

0 投票する
1 に答える
274 参照

vb.net - 実行時にControlCollectionを空にします

私はこれに対する答えをどこにも見つけることができません。フォームコントロールコレクションの新しいインスタンスを定義しましたが、実行時にコレクションは空です。フォームの1つのロードボタンでは機能しますが、別のボタンでは機能しません。コードはまったく同じですが、一方は機能し、もう一方は機能しません。関連するコードは次のとおりです。

このロードボタンはロードされません

これです。

ここに情報が渡されます。この場合も、FormControls変数は、FLoadボタンのクリックでは空ですが、CLoadボタンのクリックでは空ではありません。どんな助けでもいただければ幸いです。

編集:申し訳ありませんが、ここに関連する公共のプロパティがあります