C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: ShowDialog使用で他のアプリがアクティブにならい


(過去ログ 14 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■5033 / inTopicNo.1)  ShowDialog使用で他のアプリがアクティブにならい
  
□投稿者/ kk (2回)-(2007/07/03(Tue) 11:06:39)

分類:[C# (Windows)] 

2007/07/03(Tue) 12:27:58 編集(投稿者)
2007/07/03(Tue) 12:27:45 編集(投稿者)

VC#2005

ShowDialogで子フォームを開いた時に、他のアプリをタスクバーから選択した場合に、前面に表示されません。
一度裏に回ってしまうと、自分自身も前面に戻ってきません。

Showで子フォームを開く分には問題ないのですが…。

宜しくお願いします。

引用返信 編集キー/
■5036 / inTopicNo.2)  Re[1]: ShowDialog使用で他のアプリがアクティブにならい
□投稿者/ HIRO (34回)-(2007/07/03(Tue) 11:41:17)
HIRO さんの Web サイト
No5033 (kk さん) に返信
> VC#2005
>
> ShowDialogで子フォームを開いた時に、他のアプリをタスクバーから選択した場合に、前面に表示されません。
> 一度裏に回ってしまうと、自分自身も前面に戻ってきません。
>
> Showで子フォームを開く分には問題ないのですが…。
>
> 宜しくお願いします。
>

はじめに、分類間違ってないでしょうか? 内容からするとASP.NETではないですよね。

質問の内容からWindowsアプリケーションと解釈して話を進めます

他のアプリを選択した場合は、当然そのアプリがアクティブになるので前面に表示されないのではないでしょうか?(正常動作だと思います)

というか、kkさんが仰っている他アプリって呼び出し元のフォームのことでしょうか?

だとすれば、

ShowDialogメソッド
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemwindowsformsformclassshowdialogtopic1.asp

Showメソッド
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemwindowsformscontrolclassshowtopic.asp

について一度調べてみることをおすすめいたします。

解釈違いでしたらすみません


引用返信 編集キー/
■5040 / inTopicNo.3)  Re[2]: ShowDialog使用で他のアプリがアクティブにならい
□投稿者/ kk (3回)-(2007/07/03(Tue) 12:32:59)
分類間違っていました、指摘ありがとうございます。

いえそれがならないので困っています。
なぜか、ShowDialogで子フォームを表示させ、他のアプリ(メモ帳など)をタスクバーから選択しても
反転するだけで、前面に表示されません。

引用返信 編集キー/
■5044 / inTopicNo.4)  Re[3]: ShowDialog使用で他のアプリがアクティブにならい
□投稿者/ 虚蝉(うつせみ) (1回)-(2007/07/03(Tue) 13:09:06)
虚蝉(うつせみ) さんの Web サイト
kkさんこんにちは。

> 分類間違っていました、指摘ありがとうございます。
>
> いえそれがならないので困っています。
> なぜか、ShowDialogで子フォームを表示させ、他のアプリ(メモ帳など)をタスクバーから選択しても
> 反転するだけで、前面に表示されません。

念のため、試してみましたがこちらでは同じ症状になりませんでした。
呼び出し元だとShowDialogメソッドやShowメソッドが原因ですが。
もう一度HIROさんの返信にあるURLを確認していただいた方がいいかもしれません。
もしくは順序立てて詳しく書いていただくと詳しい人が答えてくれるかもです。
引用返信 編集キー/
■5048 / inTopicNo.5)  Re[3]: ShowDialog使用で他のアプリがアクティブにならい
□投稿者/ HIRO (35回)-(2007/07/03(Tue) 13:48:14)
HIRO さんの Web サイト
No5040 (kk さん) に返信
> 分類間違っていました、指摘ありがとうございます。
>
> いえそれがならないので困っています。
> なぜか、ShowDialogで子フォームを表示させ、他のアプリ(メモ帳など)をタスクバーから選択しても
> 反転するだけで、前面に表示されません。
>

kkさんが作成するプロジェクトはすべてそのような動作になるのでしょうか?
(小さなプロジェクトを作成して確認してみてはどうでしょう)
そのプロジェクトだけ現象が発生するのであれば、なにか特別な処理をしていないか確認したほうが良いですね。

申し訳ありませんが、最初の質問内容からだけでは、これ以上答えることができません。

虚蝉(うつせみ) さんが仰るように、順序立てて詳しく書いていただいたほうがよいかと思います。
引用返信 編集キー/
■5051 / inTopicNo.6)  Re[4]: ShowDialog使用で他のアプリがアクティブにならい
□投稿者/ kk (4回)-(2007/07/03(Tue) 14:48:08)
皆様、返信ありがとうございます。

色々順序をはしょりすぎてました、すみません。

状況は、
フォームにコンテキストメニューを付け、
コンテキストメニューから子フォームを開くと、現象が起きる。

指摘道理、別プロジェクトで試してみた所うまくいきました。
色々試してみた結果、
コンテキストメニューの初期化、呼び出し設定を、
ロード時に1度だけ行った物を使用すると起こるようです。
(何故駄目なのかが、勉強不足でよくわかりませんが…)

無事解決できました。
色々ご指摘ありがとうございました。


============以下原因のソース=========================

public partial class Form1 : Form
{

private ContextMenu contextMenu1;

public Form1()
{
InitializeComponent();

//ここでコンテキストメニューを呼んでいるのが問題らしい。
contextMenu1 = new ContextMenu();
contextMenu1.MenuItems.Add("子を開く", new EventHandler(menu_open));

this.ContextMenu = contextMenu1;
this.MouseUp += new MouseEventHandler(Form_MouseUp);
}

private void Form_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
//問題個所をこちらに書くとうまくいく

//コンテキストを表示
this.ContextMenu.Show(this, new Point(e.X, e.Y));
}
}

private void menu_open(object sender, System.EventArgs e)
{
Form f = new Form2();
f.StartPosition = FormStartPosition.CenterParent;
f.ShowDialog();
f.Dispose();
}
}
解決済み
引用返信 編集キー/
■5053 / inTopicNo.7)  Re[5]: ShowDialog使用で他のアプリがアクティブにならい
□投稿者/ M.K (34回)-(2007/07/03(Tue) 15:20:07)
No5051 (kk さん) に返信

>             this.ContextMenu = contextMenu1;

コンストラクタでフォームのContextMenuに設定をしているにもかかわらず、

>             this.MouseUp += new MouseEventHandler(Form_MouseUp);

として、その中で

>                 //コンテキストを表示
>                 this.ContextMenu.Show(this, new Point(e.X, e.Y));

としているのは何故でしょうか?

理由は私のもわからないので恐縮ですが、Form_MouseUp の処理をザクっと
削除してもForm2の表示が通常の動作に戻るようです。

以上 ご参考までに。

引用返信 編集キー/
■5054 / inTopicNo.8)  Re[6]: ShowDialog使用で他のアプリがアクティブにならい
□投稿者/ まどか (316回)-(2007/07/03(Tue) 15:53:37)
#M.Kさんの指摘(MouseUpの存在)は置いといて。

VB2005の次のコードでは再現しませんでした。
ただ、タスクバークリックの瞬間にもたつきはありました。

Public Class Form1
Private cm As New ContextMenu
Private WithEvents mn As New MenuItem("test")
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
cm.MenuItems.Add(mn)
Me.ContextMenu = cm
End Sub
Private Sub mn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mn.Click
Using d As New Form2
d.ShowDialog()
End Using
End Sub
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
If e.Button = Windows.Forms.MouseButtons.Right Then
cm.Show(Me, New Point(0, 0))
End If
End Sub
End Class

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -