特定の方法でデータを入力する必要があるtextbox
があります。データを入力した後にデータをチェックするためのセル検証技術を実装しましたが、データを入力する前にユーザーにいくつかの情報を提供したいと思います。
そのために、tooltip
をtextbox
に追加します。これは、ユーザーがツールボックスに入ったときにポップアップし、入力を開始すると終了します。
たとえば、次のコードがあります。
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
は動作するかもしれませんが、明らかに動作しません。
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値を操作して、必要な場所に移動します。目に見える時間は、消えるまでの時間です。
ツールチップは、マウスが設計どおりの場合にのみ表示されます。
InitialDelay
を0に設定してみてください:
tt.InitialDelay = 0;
ただし、これには、マウスを一瞬静止させる必要があります。
ただし、他のアプローチもあります。必要な入力を表示する一般的な方法は、ユーザーが入力を開始するまで必要な書式を表示するテキストボックスで透かし(色あせたテキスト)を使用することです。
本当にツールチップが必要な場合は、マウスオーバーしたときにツールチップを表示する情報アイコン(通常は「i」)を追加するか、独自のツールチップを実装できます。
日付を部分(日、月、年)に分割した場合にも機能する場合があります。これにより、ユーザーが入力できるものをより細かく制御できるようになります-月はドロップダウン/コンボボックスになり、常に正しい形式になります。
次のようなツールチップも表示できます。
ToolTip t = new ToolTip();
t.Show("Hello World", textBox1, 1000);
これを試して。 (上記の回答に基づいて)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);
}
}
Label1の名前を変更すると、この行も変更されるため、if ( o.Name == label1.Name)
の代わりにif ( o.Name == "label1")
を使用する必要があります。
その他:if(o.equals(label1))
...