.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

.NET で HTML パーサー

2009/05/27 16:34

HTML を解析するために HTML パーサーを探していたら
リンクをまとめている方がいましたのでメモ。

C#でのHTMLパーサー - 雑多なメモ

 

Programing, ひとりごと Permalink

POOM で仕事(Tasks)を抽出する方法

2009/05/19 20:37

POOM(Pocket Outlook Object Model)とは、Pocket Outlook のデータを操作するためのオブジェクトモデルです。
今回は、POOM を使用して Pocket Outlook の仕事データを抽出する方法をご紹介します。

[NCF2.0;C#]
using Microsoft.WindowsMobile.PocketOutlook;

using (OutlookSession session = new OutlookSession())
{
    // 作業中の仕事を抽出
    string restriction = string.Format("[Complete] = {0}", false);
    TaskCollection tasks = session.Tasks.Items.Restrict(restriction);
    foreach (Task task in tasks)
    {
        // 作業中の仕事を処理する
    }

    // さらに抽出した仕事から期限日が今日の仕事を抽出
    restriction = string.Format("[DueDate] = {0}", 
        DateTime.Today.ToLongDateString());
    tasks = tasks.Restrict(restriction);
    foreach (Task task in tasks)
    {
        // 今日の作業中の仕事を処理する
    }
}

Programing , Permalink

.Net Compact Framework で Double Buffering

2009/03/19 22:50

.Net Compact Framework では Control.SetStyle メソッドがサポートされていないため、ダブル バッファリングを有効にするここができない。

× SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);

そこで、チラつきを軽減させる方法を調べたところ

  1. 空の Bitmap クラスを作成する
  2. 1.で作成した Bitmap オブジェクトへ描画を行う
  3. この Bitmap オブジェクトを表示する


要は表示したいイメージを作成しておいて、それを一気に表示させるってことかな。

■サンプル

protected override void OnPaint(PaintEventArgs e)
{
    using (Bitmap bmp = new Bitmap(this.ClientSize.Width, this.ClientSize.Height))
    {
        using (Graphics g = Graphics.FromImage(bmp))
        {
            // 描画処理を行う
        }
        e.Graphics.DrawImage(bmp, 0, 0);
    }
    base.OnPaint(e);
}

#そう言えば昔 VC++ でコントロールを作成してる時にも同じようなことをしていたような気がする。

あ、あれ?チラつくぞ?
少し、描画処理に時間がかかるとやっぱりチラつく。

もっと読む...

Programing , Permalink

PocketOutlook のカテゴリ一覧取得方法

2009/02/09 17:44

PocketOutlook のカテゴリ一覧を C# から取得できないかなと思い、調べていたらこんな感じで取得することができたので覚書。

例えば「連絡先」の場合

using Microsoft.WindowsMobile.PocketOutlook;

// 連絡先
Contact contact = new Contact();
string temp = contact.Properties[ContactProperty.FolderCategories].ToString();

複数のカテゴリがあった場合、temp には「,」区切りで格納されている。

■サンプル

もっと読む...

Programing , Permalink