DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォームが最小化状態から元のサイズに戻らない

  • 題名: フォームが最小化状態から元のサイズに戻らない
  • 著者: toyo
  • 日時: 2012/01/24 22:47:30
  • ID: 29662
  • この記事の返信元:
    • (なし)
  • この記事への返信:
    • (なし)
  • ツリーを表示
環境/言語:[WindowsXP ProSP3,Windows7 Home / VS2010 C# .Net3.5.1]
分類:[.NET]

印刷を実行するフォームをメインフォームからモーダルで起動しています。

印刷フォームのActivatedイベント内で、
プリンタの状態を取得する処理を記述しています。

印刷フォームが最小化の状態で、且つタスクバーがメインのフォームと
まとめて1つに表示された状態の時に、タスクバーの印刷フォームを
マウスクリックしてフォームを元のサイズに戻そうとしても、
画面が最小化状態のままで元のサイズに戻らない問題が発生しています。

メインのフォームと印刷フォームのタスクバーが並列に2つ表示された状態では、
最小化状態から元のサイズに戻ります。

プリンタの状態はWMIのWin32_Printerを使用して取得しています。

WMIの処理を、Win32APIのGetPrinter(PRINTER_INFO_2)に置き換えると、
現象が発生しないことは確認しています。
GetPrinter(PRINTER_INFO_2のStatus)では電源が入っていないプリンタの
状態を取得できない現象がありましたので、WMIを使用しています。

以下の処理内容で、問題のある箇所がありますでしょうか?

現象の内容が分かりにくく、言葉足らずな部分等もあるかと思いますが、
何卒宜しく御願い致します。

using System.Management;

private void frmPrint_Activated(object sender, System.EventArgs e)
{
  string printerName = cmbPrinter.Text;
  string pName = "";
  string statusNo = "";
  string status = "";

ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_Printer");
ManagementObjectCollection moc = mos.Get();

try
{
foreach (ManagementObject oPrinter in moc)
{
pName = oPrinter["Name"].ToString();
if(printerName == pName)
{
statusNo = oPrinter["PrinterStatus"].ToString();
switch (statusNo)
{
case "3":
status = "準備完了";
break;
case "4":
status = "印刷中";
     break;
     case "6":
     status = "一時停止";
break;
case "7":
status = "オフライン";
     break;
     default:
status = "接続できません";
     break;
   }
oPrinter.Dispose();

break;
}
oPrinter.Dispose();
}
Label.Text = status;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Label.Text = "接続できません";
}
finally
{
moc.Dispose();
mos.Dispose();
}
}

DOBON.NET | プログラミング道 | プログラミング掲示板