GcZoomを配置したフォームを非表示にすると名前のないプロセスとウィンドウが生成される

文書番号 : 39086     文書種別 : 不具合     登録日 : 2015/09/04     最終更新日 : 2015/11/27
文書を印刷する
対象製品
MultiTouch for Windows Forms 1.0J
状況
修正済み
詳細
GcZoomコンポーネントを配置したフォームをHideメソッドを使用して非表示に設定すると、名前のないプロセスが2つ生成されます。

その場合、Alt+Tabキーで表示されるアプリケーション切替ウィンドウに、名前のないプロセスが2つ表示されます。
回避方法
この問題はService Pack 3(v1.0.2015.1127)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。

また、Form.Hideメソッドを実行する前に、GcZoom.Targetプロパティにnull(VBの場合はNothing)を設定することで解決できます。

以下はForm1のHideメソッド、Showメソッドを使用してフォームの表示、非表示を行う場合の回避方法の例です。

[Visual Basic]
Public Class Form1

  Public _form As Form1 = Nothing
  ' 回避方法(1/4) - start
  Public BackFromZoomFactor As Single
  Public BackFromScrollLocation As Point
  ' 回避方法(1/4) - end

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim from1 As New Form1()
    from1._form = Me

    ' 回避方法(2/4) - start
    from1.BackFromScrollLocation = Me.GcZoom1.ScrollLocation
    from1.BackFromZoomFactor = Me.GcZoom1.ZoomFactor
    ' 回避方法(2/4) - end

    from1.Show()
    Me.GcZoom1.Target = Nothing ' 回避方法(3/4)
    Me.Hide()
  End Sub

  Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
    If _form IsNot Nothing Then
      ' 回避方法(4/4) - start
      _form.GcZoom1.Target = _form
      _form.GcZoom1.ZoomFactor = BackFromZoomFactor
      _form.GcZoom1.ScrollLocation = BackFromScrollLocation
      ' 回避方法(4/4) - end
      _form.Show()
    End If
  End Sub
End Class

[C#]
public partial class Form1 : Form
{

  public Form1 _form = null;
  // 回避方法(1/4) - start
  public float BackFromZoomFactor;
  public Point BackFromScrollLocation;
  // 回避方法(1/4) - end

  public Form1()
  {
    InitializeComponent();
  }

  private void button1_Click(object sender, EventArgs e)
  {
    Form1 form1 = new Form1();
    form1._form = this;

    // 回避方法(2/4) - start
    form1.BackFromScrollLocation = this.gcZoom1.ScrollLocation;
    form1.BackFromZoomFactor = this.gcZoom1.ZoomFactor;
    // 回避方法(2/4) - end

    form1.Show();
    this.gcZoom1.Target = null; // 回避方法(3/4)
    this.Hide();
  }

  private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  {
    if (_form != null)
    {
      // 回避方法(4/4) - start
      _form.gcZoom1.Target = _form;
      _form.gcZoom1.ZoomFactor = BackFromZoomFactor;
      _form.gcZoom1.ScrollLocation = BackFromScrollLocation;
      // 回避方法(4/4) - start

      _form.Show();
    }
  }
}
キーワード
MTTK11225