.Net Compact Framework 2.0 SIP 対応方法

2009/11/04 22:57

先日、INBlogger についてコメントいただいておりまして、SIP について調査をしていたのですが、正直 SIP が表示されるとフォームのクライアント領域が縮まるものかと勝手に思っていました。

意識せずに作成してしまうとフォームの上に被さるように表示されてしまい、被さってしまったところに入力コントロールなどがあると見えない状態で入力しなければならなくなります。

これってちょっと問題でフォームをバシバシ作って、入力コントロールをバシバシ貼り付けて、出来た(^-^)と思って SIP から入力をしようと思ったら入力コントロールが隠れて見えないなんてことになってしまいます。

まあ、その為に .Net Compact Framework には  Microsoft.WindowsCE.Forms.InputPanel クラスがあるのですが・・・。

こんな対応方法でいいのか分からないのですが、対応方法を載せておきます。

■前準備

  1. From に Panel を貼り付け Dock プロパティを DockStyle.Fill にし、AutoScroll プロパティを True にする。
  2. From に InputPanel を貼り付ける。
  3. From の Activated イベントと InputPanel の EnabledChanged イベントを実装する。

■サンプル

private void inputPanel1_EnabledChanged(object sender, EventArgs e)
{
    this.ResizeOfPanel();
}

private void Form1_Activated(object sender, EventArgs e)
{
    this.ResizeOfPanel();
}

private void ResizeOfPanel()
{
    if (this.inputPanel1.Enabled)
    {
        this.panel1.Dock = DockStyle.Top;
        this.panel1.Size = this.inputPanel1.VisibleDesktop.Size;
    }
    else
    {
        this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
    }
}

INBlogger は基本メインフォームが1つで他はユーザーコントロールで作成していたので、修正はほとんど問題なかったのですが、フォームを複数使用していた場合は修正は大変ですね。

Programing , Permalink

コメント可能な期間を過ぎました