C# Programming

 

ImageToolTip

開発環境: Visual Studio 2003

1.目次

2.目的

ToolTip とは、マウスがコントロールの上を移動するときに、そのコントロールの目的の簡単な説明を表示する、
小さい四角形のポップアップ ウィンドウを表示する方法です。
Image

3.参考書

(1) MSDN ToolTip コンポーネント (Windows フォーム)

4.作り方

POST によるHTMLスクリプトで動作しています。
そこで、WebRequest を使って、C# で POST データをプログラムから書き込み、
結果を受け取って、それを表示するようにしています。

作り方
(1) ボタンなどのコントロールを Windows.Forms 上に配置します。
(2) ツールボックスから ToolTipを Windows.Forms 上に Drag & Drop します。
すると、次のように toolTip1 インスタンスが追加されます。

Image
(3) ここで、button1 のプロパティを見てみると、次のように自動的に toolTip1 の ToolTip というプロパティが追加されます。
そこで、この例では、"button1 のToopTip"というような表示したい文字列をタイプします。
Image
(4) コンパイル&実行
あとは、コンパイル&実行すれば、次のようにツールチップを表示することができるようになります。
Image

5.ToolTip のパラメータの調整

ToolTip のプロパティを表示すると、次のようになります。
通常は、デフォルトのままでOKでしょう。

Image

ToolTip のプロパティ
ActiveTrue の時だけ、ツールチップを表示します。
AutomaticDelayAutomaticDelay をセットすると、InitialDelay、ReshowDelay、AutoPopDelay を自動的に決めてくれます。
たとえば、AutomaticDelay の値を N に設定すると、
InitialDelay は N、
ReshowDelay は N/5、
AutoPopDelay は 10N
に設定してくれます。
AutoPopDelayツール ヒント文字列が表示されている時間の長さ(ミリ秒単位)
InitialDealyウィンドウを表示するまでの遅延時間(ミリ秒単位)
ReshowDealy1 つのコントロールから別のコントロールにマウスを移動したときに次のツール ヒント文字列が表示されるまでにかかる時間(ミリ秒単位)
ShowAlwaystrue にすると、フォームが非アクティブでも、ツールチップを常に表示します。

6.ソースコード

変更履歴
2004/2/8   初版作成
Form1.cs
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace ToolTip
{
        /// <summary>
        /// Form1 の概要の説明です。
        /// </summary>
        public class Form1 : System.Windows.Forms.Form
        {
            private System.Windows.Forms.Button button1;
            private System.Windows.Forms.ToolTip toolTip1;
            private System.ComponentModel.IContainer components;

                public Form1()
                {
                        //
                        // Windows フォーム デザイナ サポートに必要です。
                        //
                        InitializeComponent();

                        //
                        // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
                        //
                }

                /// <summary>
                /// 使用されているリソースに後処理を実行します。
                /// </summary>
                protected override void Dispose( bool disposing )
                {
                        if( disposing )
                        {
                                if (components != null) 
                                {
                                        components.Dispose();
                                }
                        }
                        base.Dispose( disposing );
                }

                #region Windows フォーム デザイナで生成されたコード 
                /// <summary>
                /// デザイナ サポートに必要なメソッドです。このメソッドの内容を
                /// コード エディタで変更しないでください。
                /// </summary>
                private void InitializeComponent()
                {
                    this.components = new System.ComponentModel.Container();
                    this.button1 = new System.Windows.Forms.Button();
                    this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
                    this.SuspendLayout();
                    // 
                    // button1
                    // 
                    this.button1.Location = new System.Drawing.Point(72, 40);
                    this.button1.Name = "button1";
                    this.button1.TabIndex = 0;
                    this.button1.Text = "button1";
                    this.toolTip1.SetToolTip(this.button1, "button1 の ToolTip");
                    // 
                    // toolTip1
                    // 
                    this.toolTip1.AutomaticDelay = 1000;
                    this.toolTip1.ShowAlways = true;
                    // 
                    // Form1
                    // 
                    this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
                    this.ClientSize = new System.Drawing.Size(272, 94);
                    this.Controls.Add(this.button1);
                    this.Name = "Form1";
                    this.Text = "Form1";
                    this.ResumeLayout(false);

                }
                #endregion

                /// <summary>
                /// アプリケーションのメイン エントリ ポイントです。
                /// </summary>
                [STAThread]
                static void Main() 
                {
                        Application.Run(new Form1());
                }
        }
}