問題タブ [topmost]

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

wpf - WPF でコントロールを最上位にする

ユーザーがさまざまなフォーム要素を選択してドラッグできるフォームがあります。ユーザーはフォームのレイアウトをカスタマイズできるため、キャンバスを使用しており、すべての要素はその子です。

2 つの要素が同じ領域にある場合、キャンバスの子として最後に追加された方が上に描画されます。ドラッグされているアクティブな要素を、最上位の要素に設定できるようにしたいと考えています。

SetZOrder メソッドをいじって 0 に設定しましたが、何もしません。GetZOrder を呼び出すすべての要素を調べると、それぞれに 0 が返されるため、0 に設定しても違いはありません。

私が見つけた唯一の解決策は、要素を削除してキャンバスに追加することです。

これは機能しますが、これを行うためのより適切で適切な方法があるに違いないと感じています。

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

c# - 他のすべてのアプリケーションをロック/フリーズし、閉じることができない WinForms アプリケーションを作成するにはどうすればよいですか?

ユーザーがアプリのテキストボックスに値を入力して[OK]をクリックするまで、すべてのプログラムをロックまたはフリーズするアプリケーションをc#で作成しています。

アプリの目的は、人々に時間を入力してもらうことです。

私の知る限り、一番上に設定できますが、タスクマネージャーでアプリを終了できるため、ここで立ち往生しています..

どんな助けでもいただければ幸いです

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

c# - タスクバー/スタート メニューが上にあるときに、一番上のフォーム/ウィンドウにウィンドウ メッセージが送信されますか?

Windows 7 で C# Windows Forms プログラムを使用していますが、どの Windows プログラムにも当てはまると思います。

プログラムのメイン フォームは画面全体をカバーし、Topmost プロパティが設定されています。ただし、たとえば、[スタート] キーをクリックして [スタート] メニューを開くと、タスクバーと [スタート] メニューが [常に手前に表示] フォームの上に表示されます。

これが発生し、フォーム/ウィンドウが最上位のウィンドウ (または Z オーダーの最上位) ではなくなったときに、フォーム/ウィンドウに送信されるウィンドウ メッセージ (WM_) はありますか? WndProc を使用してキャッチしたいと思います。

ありがとうございました

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

wpf - Window.Topmost=false は最上位の動作を確実に停止しません

WPF のバグだと思われるものを回避する方法を探しています。これは、問題の最も単純な例です。この場合、明らかに Window.Topmost の目的を無効にしますが、問題を非常に明確にします。System.Windows.Window を実装する場合:

これは、ウィンドウまたはそのコンテンツが、新しくアクティブ化された別のアプリケーションの上に描画し続けることを確実に防止するものではありません。たとえば、メモ帳のテキスト領域をクリックすると、WPF ウィンドウがメモ帳の上に描画されます。メモ帳の上部をクリックすると (これは私が試した他のほとんどのアプリケーションで一般的です)、MOUSEUP が発生するまで WPF ウィンドウが描画されます。MOUSEDOWN を繰り返し実行できますが、MOUSEUP がすぐに後ろに来ない限り、ウィンドウは一番上にとどまります。ただし、どのアプリケーションのどこをクリックしたかによって、または別のアプリケーションをクリックした場合に、そのアプリケーションの上に描画されない場合に、確実に後ろに描画される状況がいくつかあります。

注:実際に私がやろうとしているのは、Windowsフォームに「くっつく」透明なオーバーレイを使用することです。したがって、その場合、ユーザーがフォームを操作している間、99% の時間で既に非アクティブ化されています。ウィンドウの TopMost を確実にオフにできないため、アプリケーションの非透過部分が他のアプリケーションの上に浮かび続けます。ウィンドウのレンダリングを強制しても、何も変わりません。

添付のスクリーンショットは、2 番目のアプリケーションをクリックしてもバグが再発しないことを示していますが、最初のウィンドウの上にとどまります (赤い部分は私のアプリケーションのものです)。

Topmost==false で挟まれたウィンドウのスナップショット

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

c++ - Internet Explorer が常に一番上のウィンドウになることを保証する方法はありますか?

Internet Explorer ウィンドウを強制的に TOPMOST にしようとしています。Internet Explorer ウィンドウの上に他のウィンドウが表示されないようにする必要があります。インターネットエクスプローラーを使用する必要があります。私もこれを Windows 7 で実行しています。どうやら違いはあるようですが、私が見つけたすべての情報はどちらかというと曖昧で、基本的には「なぜこれは簡単ではないのか!」と叫ぶ人々で構成されています。これは私のコードです:

これはループで実行されているため、ウィンドウにこれらの設定を継続的に強制することができますが、役に立ちません。上記のコードが機能する場合と機能しない場合があります。

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

c# - C#で最上位のフォームウィンドウにダイアログを開く方法

フォームを使用してユーザーのコントロールを表示する C# プログラムを作成しました。メインフォームはその上に他のフォームを開き、新しいフォームはそれぞれに設定されていますtopmost

プログラムで、新しい PDF ファイルを作成するためにPDFCreatorを呼び出しますが、フォームが「最上位」に設定されているため、ダイアログが表示されません。

これに対する解決策はありますか

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

c# - ClickOnce が有効で公開されている場合、ワーカースレッドから呼び出された最上位の Windows.Form が機能しない

別のアプリケーション (この場合はメモ帳) を開始するフォームであるメイン スレッドがあり、メモ帳が閉じられるのを待つ BackgroundWorker を生成します。閉じると、BackgroundWorker は別の Form をユーザーに一番上に表示します。ユーザーがメイン スレッド ダイアログのいくつかのボタンをクリックできるように、このフォームは非モーダルである必要があります。問題は、このフォーム (BackgroundWorker の Form2) が TopMost ではなく、true に設定していることです。F5 キーを押すと機能しますが、ClickOnce アプリケーションとしてサーバーに公開すると、form2 は最上位ではなくなります。Form2.Topmost = true、BringToFront、Activate、"MakeTopMost"フォームを強制的に前面に出す強力な方法は何ですか? ....何も機能していないようです。

メイン フォームのハンドルを取得して、それを form2 の親として使用しようとしましたが、「InvalidOperationException: クロススレッド操作が無効です: コントロール 'Form2' がスレッド以外のスレッドからアクセスされました。に作成されました。」

コード スニペットを次に示します。

他のアイデアはありますか?または、誰かが上記のコードを修正できますか? 私はこの問題に何週間も取り組んでいて、慌てています。

ありがとう!

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

c# - 実行時に topMost を変更する

私はこのコードを使用しています..現在、デフォルトで私のアプリは topMost = true です

しかし、ボタンにこの機能を実行させようとすると、問題が発生し、一度無効になります。次に、2回目のクリックではありません。

理由はありますか?これは、メニューからの設定ホットキーでも過去に発生しました。一度それを行うことができましたが、その後は機能しません:(

編集:方法はわかりましたが、これを使用して別のフォームから実行することはできません。

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

c++ - すべての上にウィンドウを表示する方法 (全画面ゲームも!) c++/Qt

画面の中央に十字線を表示し、他のすべての上にとどまるアプリケーションを作成しようとしています。その目的は、十字線を提供しない一部の FPS ゲームで十字線を表示することです。ゲーム以外のすべてのウィンドウを一番上にすることに成功しました:/

これが私のコードです:(私はアプリのコア機能のみをテストしているので、すべてがメインです。問題をよりアクセスしやすくするために広範囲にコメントしました)

私の推測では、ゲームなどのアプリケーションでは、ディスプレイ デバイスをより直接的に制御できます。この問題の解決策を探しています (必ずしも透明な最上部のウィンドウを含むものではありません)。また、誰かが GetLastError() を効果的に使用する方法と、ゲームの動作が一般的なウィンドウとは異なる理由を説明できる場合は、補足として。

前もって感謝します。