問題タブ [winforms]
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# - WinForms ComboBox データ バインディングの落とし穴
次のようなことをしているとします
これで、2 つのコンボ ボックスがその配列にバインドされ、すべて正常に動作しました。ただし、1 つのコンボ ボックスの値を変更すると、両方のコンボ ボックスが選択したものに変更されます。
今、私は配列が常に参照によって渡されることを知っています (私が C :D を学んだときにそれを学びました)、一体なぜコンボ ボックスが一緒に変更されるのでしょうか? コンボ ボックス コントロールがコレクションをまったく変更しているとは思えません。
回避策として、これは期待/望ましい機能を達成しないでください
c# - C#WinFormsアプリケーションでのFlashコンテンツの表示
C# WinFormsアプリケーションFlash
でコンテンツを表示するための最良の方法は何ですか?画像やフラッシュコンテンツを表示できるユーザーコントロール(現在と同様)を作成したいと思います。PictureBox
ディスク上のファイルではなく、ある種のストリームからフラッシュコンテンツをロードできると便利です。
c# - コンテキストメニューの下でクリックされた検索ノード
コンテキスト メニューがアクティブになっているツリー リスト内のノードを確認するにはどうすればよいですか? たとえば、ノードを右クリックして、メニューからオプションを選択します。
SelectedNode
ノードが右クリックされただけで選択されていないため、TreeViews のプロパティを使用できません。
winforms - winforms コントロールのグローバル例外処理
ASP.NET 1.1 プロジェクトに取り組んでいるとき、私は常に Global.asax を使用してすべてのエラーをキャッチしました。ホストされたIEコントロールになるWindowsフォームユーザーコントロールですべての例外をキャッチする同様の方法を探しています。このようなことをするための適切な方法は何ですか?
c# - WinForms PictureBoxで画面空間座標から画像空間座標にどのように変換する必要がありますか?
PictureBox
Windowsフォームコントロール内に画像を表示するアプリケーションがあります。SizeMode
コントロールのは、のサイズに関係なく、Zoom
に含まれる画像がPictureBox
アスペクトが正しい方法で表示されるように設定されていPictureBox
ます。
これは、ウィンドウのサイズを自由に設定でき、画像は常に最適なサイズで表示されるため、アプリケーションの視覚的な外観に最適です。残念ながら、画像ボックスでのマウスクリックイベントも処理する必要があり、画面空間の座標から画像空間の座標に変換できる必要があります。
画面スペースからコントロールスペースに変換するのは簡単なようですが、コントロールスペースからイメージスペース(つまり、画像ボックスで拡大縮小されたソースイメージのピクセル座標)に変換する明確な方法がわかりません。
これを行う簡単な方法はありますか、それとも、画像を配置して自分で翻訳を行うために内部で使用しているスケーリング計算を複製する必要がありますか?
c# - 複数のGUIスレッドを「スピンオフ」することは可能ですか?(Application.Runでシステムを停止しない)
私の目標
メインの処理スレッド(非GUI)を使用し、必要に応じて独自のバックグラウンドスレッドでGUIをスピンオフできるようにし、メインの非GUIスレッドを引き続き機能させたいと考えています。言い換えれば、メインの非GUIスレッドをGUIスレッドの所有者にし、その逆はしたくないということです。これがWindowsフォーム(?)でも可能かどうかはわかりません
バックグラウンド
IComponent
コントローラーがアセンブリを動的にロードし、単一のメソッドで共通のインターフェイスを実装するクラスをインスタンス化して実行するコンポーネントベースのシステムがありますDoStuff()
。
ロードされるコンポーネントは、xml構成ファイルを介して、およびのさまざまな実装を含む新しいアセンブリを追加することによって構成されますIComponent
。コンポーネントは、メインアプリケーションにユーティリティ機能を提供します。メインプログラムがそれを実行している間、たとえば原子力発電所を制御している間、コンポーネントは(独自のスレッドで)ユーティリティタスクを実行している可能性があります。たとえば、データベースのクリーニング、電子メールの送信、プリンターでの面白いジョークの印刷などです。私が望んでいるのは、これらのコンポーネントの1つがGUIを表示できるようにすることです。たとえば、前述の電子メール送信コンポーネントのステータス情報を表示できます。
システム全体の寿命は次のようになります
- アプリケーションが起動します。
- ロードするコンポーネントの構成ファイルを確認してください。それらをロードします。
- コンポーネントごとに、実行
DoStuff()
して初期化し、独自のスレッドで独自の生活を送るようにします。 - 主なアプリケーションを続けてください-仕事の王様、永遠に。
コンポーネントがでGUIを起動した場合、まだポイント3を正常に実行できていませんDoStuff()
。GUIが閉じられるまで停止するだけです。そして、GUIが閉じられるまで、プログラムはポイント4に進みません。
これらのコンポーネントが独自のWindowsフォームGUIを起動できるようになっていると便利です。
問題
コンポーネントがGUIを起動しようとするとDoStuff()
(コードの正確な行はコンポーネントの実行時です)、コンポーネント、つまりシステムはGUIが閉じられるまでその行Application.Run(theForm)
で「ハング」します。Application.Run()
さて、起動したばかりのGUIは、期待どおりに正常に機能します。
コンポーネントの例。1つはGUIとは何の関係もありませんが、2つ目はピンクのふわふわのウサギが入ったかわいいウィンドウを起動します。
私は運が悪かったのでこれを試しました。独自のスレッドでGUIを起動しようとしても、GUIが閉じられるまで実行は停止します。
GUIをスピンオフして、後で戻ることは可能Application.Run()
ですか?
c# - ビジュアルスタイルが有効になっているComboBoxのようにコントロールをレンダリングするにはどうすればよいですか?
ComboBoxをモデルにしたコントロールがあります。コントロールの境界線が標準のWindowsComboBoxの境界線のようになるようにコントロールをレンダリングしたいと思います。具体的には、MSDNのドキュメントに従っており、コントロールが無効になっている場合のレンダリングを除いて、コントロールのすべてのレンダリングは正しいです。
明確にするために、これはビジュアルスタイルが有効になっているシステム用です。また、無効になっているコントロールの周囲の境界線を除いて、コントロールのすべての部分が適切にレンダリングされます。これは、無効になっているComboBoxの境界線の色と一致しません。
VisualStyleRendererクラスを使用しています。MSDNは、 ComboBoxコントロールのTextBox部分にVisualStyleElement.TextBox
要素を使用することを提案していますが、標準の無効なTextBoxと標準の無効なComboBoxの描画は少し異なります(一方には薄い灰色の境界線があり、もう一方には水色の境界線があります)。
無効な状態でコントロールを正しくレンダリングするにはどうすればよいですか?
c# - ボタンが押されたように見せる方法は?
VS2008、C#、.Net 2、および Winforms を使用して、通常のボタンを「押された」ように見せるにはどうすればよいですか? このボタンがオン/オフ スイッチであると想像してください。
ToolStripButton
には Checked プロパティがありますが、通常の Button にはありません。
c# - Winform/ビジュアル要素を印刷します
私がグーグルで見つけたすべての記事は時代遅れであるか、互いに矛盾しています。
フォームや、たとえばC#のリッチテキストボックスを印刷する最も簡単な方法は何ですか?PrintDiaglog
を設定してクラスを使用していると思いますDocument
が、これはどのように変換されますか?
.net - フォーム上の public/protected コンポーネントにアクセサ メソッド / Getter Setters を提供する必要がありますか?
親または他のフォームからアクセスする必要があるテキスト ボックスなどのコンポーネント/オブジェクトを含む .Net フォームがある場合、このコンポーネントの修飾子を内部またはパブリック レベルの変数に「アップグレード」する必要があります。
ここで、フォーム クラスで int 型または string 型などのパブリック変数を提供している場合、Getters と (おそらく) Setters を直接提供する以外に何もしなかったとしても、これを使用することについて二度考えることはありません。変数にアクセスします。
ただし、VS デザイナーは、フォーム上のコンポーネントであるパブリック オブジェクトに対してそのような Getter/Setter を実装していないようです (したがって、適切なプログラミング プラクティスに準拠していません)。
それで、問題は次のとおりです。「正しいこと」を行うには、そのような VS デザイナー コンポーネントまたはオブジェクトをゲッターやセッターでラップする必要がありますか?