問題タブ [mdi]

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 投票する
2 に答える
2142 参照

c# - MDI クライアント領域でドラッグオーバー/ドラッグドロップ イベントのハンドラをどのようにセットアップしますか?

C# と .Net Framework 2.0 を使用します。MDI アプリケーションがあり、ドラッグオーバー/ドラッグドロップ イベントを処理する必要があります。アプリケーションの左側にドッキングされたリストがあり、リストから項目をドラッグして MDI クライアント領域にドロップし、項目の正しい MDI 子を開きたいと考えています。ハンドラーをどこにアタッチすればよいかわかりません。メイン フォームのイベントとフォームの一部である MdiClient にアタッチしようとしましたが、どちらのイベント ハンドラーも呼び出されると思われるときに呼び出されないようです。

Infragistics Tabbed MDI Manager も使用しているため、それが影響しているかどうかはわかりません。

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

collections - オブジェクトを複数のクラスに拡張する良い方法

注文のコレクションがあります。データベースに一度アクセスし、注文を取得して保存し、複数のフォームでこのコレクションにアクセスできるようにしたいと考えています。asp.net では、Application Object や Session Object などを使用できることは知っていますが、win フォーム アプリではどのように行うのですか? 複数のフォーム、クラス、またはどこからでもアクセスできる静的コレクションを作成することを考えていました。これは正しいと思いますか?それは実現可能ですか?

ありがとう

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

.net - Winform + MDI の子

WinForms で、MDI 子ウィンドウの初期開始位置をある程度インテリジェントな方法で指定する方法はありますか?

手動の位置を適用したり、中央の親にすることはできますが、これらのオプションはどちらも既存のウィンドウをあまり考慮していません。

「スマートな配置」を行う方法が組み込まれているかどうか、またはこのコードを自分で実装する必要があるかどうかを知りたいです。

余談ですが、タイル ビューとカスケード ビューも自動化する方法はありますか?

0 投票する
6 に答える
1842 参照

c# - MDIの長所と短所

私は現在働いている前の開発者からアプリケーションフレームワークを継承しました。このフレームワークは、複数の親子関係を利用します。多くの場合、親/親/子が発生します。私はなぜ彼がMDIを使用しなかったのかと尋ねたところ、彼が始めた数年前、MDIには前述の関係シナリオに関して大きな欠点があったと述べました。特に複数の親の場合。

私の実際の質問は次のとおりです。MDIにはまだこれらの欠点がありますか?&MDIを使用したことがある方、どのような問題があり、どのように克服しましたか?

ありがとう!

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

c# - .Owner プロパティと ShowDialog(IWin32Window 所有者) の違いは?

winform の所有者は、.Ownerプロパティを介して明示的に設定できると思います。または、オーバーロードされたメソッドShowDialog(IWin32Window owner)で所有者を渡します。

MDI フォームを操作するときに、これらのメソッドが異なる動作を示す理由を理解できません。

MDIParent と MDIChild を作成しました。

また、ロード時に所有者を表示する単純な winform MyDialogBox もあります。

方法 A - MDIChild のロードでは、次のコードがあり、これにより MyDialogBox の所有者がMDIChildに設定されます。

方法 B - または、MDIChild の load メソッドで、次のコードを使用すると、MyDialogBox の所有者がMDIParentに設定されます。

私はまた、ここで次のことを読みました

MDI 親フォームのみが、MDI 子、モーダル ダイアログ、または親が Owner パラメータとして設定されたフォームなど、別のフォームを所有できます。

もしそうなら、方法Aはまったく機能しないはずですよね?

私は何が欠けていますか?メソッド B が所有者を MDIChild に設定しないのはなぜですか?

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

eclipse - Eclipse を MDI モードから外すにはどうすればよいですか?

Eclipse を MDI アプリケーションではなく SDI アプリケーションにする方法を知っている人はいますか? SDI - 単一のドキュメント インターフェイス、各ペインは独自のウィンドウ MDI - 複数のドキュメント インターフェイス、すべてのペインは 1 つの「マスター」ウィンドウ内に固定されています。

Eclipse は MDI アプリケーションです。小さなペイン (コール スタック、変数ビューアーなど) はすべて、1 つのマスター Eclipse ウィンドウの一部です。すべてのウィンドウを 1 つのマスター「日食」ウィンドウ内に固定するのではなく、すべてのウィンドウを独自のフリー フローティング ウィンドウにしたいと考えています。

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

.net - MDI フォーム 'creep' (MDI ウィンドウでの位置変更)

VB.NET MDI WinForms アプリがあります。私のユーザーは、フォーム クリープ (彼らが呼ぶように) について不満を漏らしてきました。これは、メイン MDI ウィンドウ内で特定のフォームを開くたびに、以前にロードした場所のわずかに右下に開く場所です。ウィンドウの左上から右下に向かって機能します。

私は、これが非常に苛立たしいことであることに同意する必要があります。これを防ぐ方法はありますか? フォームをロードするコードは次のとおりです。

フォームの開始位置を「手動」に設定することでこれにある程度対処できますが、画面の左上で互いに直接重なって開くだけです。

他の SO ユーザーはこれに出くわしますか?

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

c# - Vista での MDI ウィンドウのガラスの外観

VS 2008 の C# で winforms MDI アプリケーションを開発しています。Vista では MDI フォームがガラスのように見えないことに気付きました。

これは設計によるものですか?これらの窓のガラスの外観を取得する簡単な方法はありますか?

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

c# - デスクトップ アプリケーション用の Visual Studio ツールボックス スタイルのナビゲーションを探しています

側面にナビゲーション パネルがある MDI アプリケーションを使用するプロジェクトに取り組んでいます。現在は ListView です。ただし、Visual Studio 2008 のツールボックスと同じように再設計したいと考えています。

これがデフォルトのペイント メソッドをオーバーライドする必要がある場合は、ペイント メソッドを使用した経験がないため、ペイント メソッドの操作方法に関する参考資料を提供していただけると助かります。

前もって感謝します。

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

delphi - Delphiでコードが実行されているMDIフォームを正常に終了するにはどうすればよいですか?

Delphi2007で記述されたMDIアプリケーションがあります。

コードの実行中にユーザーがフォームを終了すると、例外が発生します。これは、コードがコンポーネントを更新しようとしている、またはフォームで解放されたオブジェクトを使用しようとしているためです。

とにかく、終了イベントでコードが実行されているかどうかを知ることができますか、それともこの状況に対処するための標準的な方法がありますか?

より多くの情報で更新

例外は通常、次の状況で発生します。

子mdiフォームのボタンを押すと、フォーム内の関数がアクティブになります。関数はデータベースに移動してデータを取得し、再フォーマットしてフォームのビジュアルコンポーネント(TListViewを使用可能)に表示します。 )。

コードの実行に時間がかかる場合(処理するデータが多い場合など)、ユーザーは興味を失い、閉じるボタンをクリックします(これを回避するためにコードの速度が調整されています)。

関数内のコードは、それが属するフォームが解放されていても(コードはフォームのプライベートセクションにあります)、ビジュアルコンポーネントを更新しようとすると、存在しなくなります(解放されたため)。フォーム)そしてそれは例外をスローします。

子フォームのコードは、これが発生したときに通常はループ内にあり、レコードを循環させ、それに応じてリストビューを更新します。ループには、次のようなコードが含まれています。

その他のコードサンプル

fromCloseイベントは次のようになります

DoFormFreeは、メインのmdi親フォームの関数であり、次のようになります。

さまざまな理由から、すべてのフォームはリストに格納され、すべての子フォームはTBaseFormクラスを拡張します。

理想的には、フォーム内のコードが実行されているかどうかを確認し、ユーザーがフォームを閉じないようにするか、コードが終了するまで非表示にする方法が必要です。場合によっては、レポートが生成され、ステータスパネルとして更新されることがあります。例外が発生します。その場合、レポートは不完全になります。

すべてのフォームはTbaseのサブクラスであるため、これを行うためのグローバルな方法が理想的であるため、コードをベースフォームに追加して、すべての子孫フォームで機能させることができます。