web-dev-qa-db-ja.com

テキストボックスのエントリにツールチップを表示する

特定の方法でデータを入力する必要があるtextboxがあります。データを入力した後にデータをチェックするためのセル検証技術を実装しましたが、データを入力する前にユーザーにいくつかの情報を提供したいと思います。

そのために、tooltiptextboxに追加します。これは、ユーザーがツールボックスに入ったときにポップアップし、入力を開始すると終了します。

たとえば、次のコードがあります。

private void YearEdit_Enter(object sender, EventArgs e)
  {
        ToolTip tt = new ToolTip();
        tt.IsBalloon = true;
        tt.InitialDelay = 0;
        tt.ShowAlways = true;
        tt.SetToolTip(YearEdit, "Enter 4 digit year.");
    }

これは、ユーザーがtextboxを入力すると実行されますが、tooltipは、マウスがtextboxの上に置かれたときにのみ表示されます。これを回避するアイデアはありますか?おそらくtt.ShowAlways = trueは動作するかもしれませんが、明らかに動作しません。

19
Lukas Bystricky

Textbox.enterイベントにフックし、次のコードを使用します。

private void textBox1_Enter(object sender, EventArgs e)
    {
        TextBox TB = (TextBox)sender;
        int VisibleTime = 1000;  //in milliseconds

        ToolTip tt = new ToolTip();
        tt.Show("Test ToolTip",TB,0,0,VisibleTime);
    }

X/Y値を操作して、必要な場所に移動します。目に見える時間は、消えるまでの時間です。

28
Lee Harrison

ツールチップは、マウスが設計どおりの場合にのみ表示されます。

InitialDelay を0に設定してみてください:

tt.InitialDelay = 0;

ただし、これには、マウスを一瞬静止させる必要があります。

ただし、他のアプローチもあります。必要な入力を表示する一般的な方法は、ユーザーが入力を開始するまで必要な書式を表示するテキストボックスで透かし(色あせたテキスト)を使用することです。

本当にツールチップが必要な場合は、マウスオーバーしたときにツールチップを表示する情報アイコン(通常は「i」)を追加するか、独自のツールチップを実装できます。

日付を部分(日、月、年)に分割した場合にも機能する場合があります。これにより、ユーザーが入力できるものをより細かく制御できるようになります-月はドロップダウン/コンボボックスになり、常に正しい形式になります。

3
ChrisF

次のようなツールチップも表示できます。

ToolTip t = new ToolTip();
t.Show("Hello World", textBox1, 1000);
2
lamiinek

これを試して。 (上記の回答に基づいて)ToolTipを使用するすべてのコントロールにイベントハンドラーを追加します。すべてのイベントハンドラーが同じメソッドを指すようにします。次に、このような処理方法を構築します

private void procToolTips(object sender, EventArgs e)
{
   ToolTip tt = new ToolTip();
   Control o = (Control)sender;
   if ( o.Name == "label1") {
     tt.Show("Lorem ipsum dolor sit ame", o, 1000);
   }
}
1
user2283985

Label1の名前を変更すると、この行も変更されるため、if ( o.Name == label1.Name)の代わりにif ( o.Name == "label1")を使用する必要があります。

その他:if(o.equals(label1))...

0
Gilles Mignard