none
タスクバーにタスクが表示されない RRS feed

  • 質問

  •  

     

    はじめまして。

    現在、

    Form1 -> Form2

    という画面遷移において、

     

    public partial class Form1 : Form
    {
      ...
      private void button1_Click(object sender, EventArgs e)
      {
        ...
        IHoge hoge = (IHoge)Assembly.LoadFrom([DLL ファイルパス]).CreateInstance("Hoge");
    
        hoge.Owner = this;
    
        Hide();
    
        hoge.Run([パラメータ1], [パラメータ2]);
    
        Show();
    
      }
      ...
    }
    
    public abstract class AHoge : IHoge
    {
      ...
      private Form owner;
      ...
      public abstract Wizard CreateWizard();
      ...
      public Form Owner
      {
        get { return owner; }
        set { owner = value; }
      }
      ...
      public void Run(int prm1, int prm2)
      {
        ...
        Wizard wizard = null;
        try
        {
          ...
          wizard = CreateFormWizard();
          wizard.ShowDialog(Owner);
          ...
        }
        finally
        {
          ...
          if (null != wizard)
          {
            wizard.Dispose();
          }
          ...
        }
      }
      ...
    }
    
    public class Hoge : AHoge
    {
      ...
      public override Wizard CreateWizard()
      {
        return new Form2();
      }
      ...
    }
    
    public partial class Wizard : Form
    {
      ...
    }
    
    public partial class Form2 : Wizard
    {
      ...
    }
    
    

    という実装をしています。

    これを動作させるとForm2を表示した際にタスクバーからタスクが消えてしまいます。

    Form1、および、Form2のShowInTaskbarプロパティは true になっています。

    Form2内でHide() -> Show()を行うとタスクバーにタスクが表示されます。

    デバッグでForm2内でHide() -> Show()の前後で違いを見てみましたが、

    【実施前】

    ownerWindow:null

    【実施後】

    ownerWindow:TaskbarOwnerと同じハンドル

    という差異があることまでは判りました。

    しかし、このownerWindowメンバーを直接操作することはできません。

    また、何故差異があるのかが判りません。

    ご存知の方がいらっしゃいましたら原因、対策等の情報をご提供いただけますでしょうか。

    2011年12月16日 5:37

回答

  • (まずはじめに、今すぐ回答が出せる方は、この投稿を無視して回答してください。)

     

    想像でコードを補完し、ちょっと試してみました。が、情報が足りず同じ状態に持っていけませんでした。

    まず、同じ状態を再現するために、以下、必要な情報をください。

     

     

    1.「タスクバーからタスクが消える」というのは、Form1,Form2いずれのタスクも表示されないということでしょうか?

    (想像で補って書いてみたコードではForm1のbutton1_Click後Form2のタスクは表示されていました。From2という文字はタスクに表示されませんでしたが。)

     

    2.最小限のコードをください。

    IHogeはインターフェースだと思うのですが、その定義内容を教えて下さい。

    Assembly.LoadFrom([DLL ファイルパス])とされている部分ですが、Hogeクラスは別dllにすればいいですか?どこまでをdllとして切り分けているのか教えて下さい。

    public void Run(int prm1, int prm2)の引数は今回必要無いですよね。など、今回のケースに対し、不要な部分は削ってください。

    ・また、上記メソッド内のwizard = CreateFormWizard();はCreateWizard();のことですよね。など、コードに間違いがないか確認おねがいします。

    ・あと、「...」はコピペしたいので消しておいてもらえると助かります。

    ・最後に念のため、ご利用のVisualStudioと.NETフレームワークのバージョンも教えて下さい。

     

    以上、よろしくおねがいします。

    • 回答の候補に設定 山本春海 2012年1月11日 8:45
    • 回答としてマーク 山本春海 2012年1月18日 7:18
    2011年12月16日 10:17
  • あとは、OS のバージョンも書いてもらうとよいかも。
    (Win7 (x64) + .NET 3.5.1 or .NET 4 では単純なコードで再現しないので)
    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク 山本春海 2012年1月18日 7:18
    2011年12月16日 14:31
    モデレータ

すべての返信

  • (まずはじめに、今すぐ回答が出せる方は、この投稿を無視して回答してください。)

     

    想像でコードを補完し、ちょっと試してみました。が、情報が足りず同じ状態に持っていけませんでした。

    まず、同じ状態を再現するために、以下、必要な情報をください。

     

     

    1.「タスクバーからタスクが消える」というのは、Form1,Form2いずれのタスクも表示されないということでしょうか?

    (想像で補って書いてみたコードではForm1のbutton1_Click後Form2のタスクは表示されていました。From2という文字はタスクに表示されませんでしたが。)

     

    2.最小限のコードをください。

    IHogeはインターフェースだと思うのですが、その定義内容を教えて下さい。

    Assembly.LoadFrom([DLL ファイルパス])とされている部分ですが、Hogeクラスは別dllにすればいいですか?どこまでをdllとして切り分けているのか教えて下さい。

    public void Run(int prm1, int prm2)の引数は今回必要無いですよね。など、今回のケースに対し、不要な部分は削ってください。

    ・また、上記メソッド内のwizard = CreateFormWizard();はCreateWizard();のことですよね。など、コードに間違いがないか確認おねがいします。

    ・あと、「...」はコピペしたいので消しておいてもらえると助かります。

    ・最後に念のため、ご利用のVisualStudioと.NETフレームワークのバージョンも教えて下さい。

     

    以上、よろしくおねがいします。

    • 回答の候補に設定 山本春海 2012年1月11日 8:45
    • 回答としてマーク 山本春海 2012年1月18日 7:18
    2011年12月16日 10:17
  • あとは、OS のバージョンも書いてもらうとよいかも。
    (Win7 (x64) + .NET 3.5.1 or .NET 4 では単純なコードで再現しないので)
    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク 山本春海 2012年1月18日 7:18
    2011年12月16日 14:31
    モデレータ
  • Azuleanさん

    そうですね。ご助言ありがとうございます。

    xxXeSxxさん

    OS のバージョンもよろしくおねがいします。

    2011年12月16日 18:01
  • こんにちは、xxXeSxx さん。

    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。
    その後いかがでしょうか。

    再現するための情報が不足しているようですので、情報の更新をお願いいたします。
    解決しているのであれば、原因と共に情報更新していただけるとうれしいです。
                                                                    
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2011年12月27日 2:00