質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

1361閲覧

c# wpf ウインドウの強制クリックに関して

miyakosi_souich

総合スコア6

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

1クリップ

投稿2021/10/18 07:13

編集2021/10/18 09:18

C# wpfアプリを作成中のものです
テキスト表示用windowの横にテンキーを模したwindowを出してそこから入力を行っています。
入力制限を設けており、それを超えようとすると注意用のダイアログを表示させるのですが、テンキーのwindowにフォーカスが当たっており、ダイアログが隠れてしまいます。そのためダイアログを表示させた後、強制クリック等を利用してダイアログを最前面に持ってきたいと考えております。強制クリックができるのであればその方法がする知りたいのですが、windowのフォーカスを切り替えるなどの方法があるのであれば教えていただきたいです。
ダイアログが後ろ
上の状態で工具補正設定の画面部分をクリックすると下のように注意用ダイアログが表示されます
工具補正設定画面クリック語

ダイアログを出しているのは工具補正設定の画面で、windowsのtopmostを設定せずに実行するとダイアログが表示されるのですが、Topmostを設定せずに実行を行うと背面のwindowにふれると隠れてしまいます。topmostをtrueにしておく以外に方法があれば知りたいです。

環境は
visualstudio2019
wpfアプリ
.NET Framework 4.7.2
となっております

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hihijiji

2021/10/18 07:33

ダイアログの代わりにPopupじゃダメですか?
TN8001

2021/10/18 09:03

1. ダイアログはどう出しているんでしょうか?(MessageBox?ShowDialog()?) 2. どちらのウィンドウから上記を呼んでいることになるんでしょうか? 3. Ownerの指定はしているでしょうか? ふつうはオーナー指定すればそれに隠れることはなくなるはずですが、「特定条件でおかしくなる」のようなことを見たような気もするのですがソースが見つからないです^^;
miyakosi_souich

2021/10/18 09:04

デザインが気に入っていたのでできればこのままでいきたいなと試行錯誤していたところwindowsのtopmostを設定せずに実行することでダイアログがすぐに出るようになりました。アイデアを下さりありがとうございました
miyakosi_souich

2021/10/18 09:08

またOwner指定ができていなかったため、そちらも考えていきたいと思います。ありがとうございました。
TN8001

2021/10/18 09:22

MessageBoxの場合は、owner(Window)を指定するオーバーロードがあります。 [MessageBox.Show メソッド (System.Windows) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.messagebox.show?view=netframework-4.7.2#------- ShowDialog()の場合は、ShowDialog()する **前に** Ownerを設定します。 [Window.Owner プロパティ (System.Windows) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.window.owner?view=netframework-4.7.2#System_Windows_Window_Owner 本来はTopmostは無関係のはずですが、「特定条件」がそれに関係していた気もします。
miyakosi_souich

2021/10/18 10:25

アドバイス有難うございます。ウインドウの親関係を考えず作成してしまっていたためownerを利用し組み直したところうまくいきました。丁寧なご対応ありがとうございました。
TN8001

2021/10/18 10:27

よかったですね^^ お手数ですが自己回答で解決済みにしてください。
guest

回答1

0

自己解決

windowの親関係を考えず作ってしまっていたため、考えて作り直したところうまくいきました。ありがとうございます。

投稿2021/10/18 10:27

miyakosi_souich

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問