-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPlaceholderTextBox.cs
More file actions
108 lines (95 loc) · 2.66 KB
/
Copy pathPlaceholderTextBox.cs
File metadata and controls
108 lines (95 loc) · 2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace StatTag.Controls
{
public sealed partial class PlaceholderTextBox : UserControl
{
public event EventHandler TextChanged;
[Description("The placeholder text that should appear when the textbox is empty"), DisplayName("Placeholder Text")]
public string PlaceholderText
{
get { return placeholderText; }
set
{
placeholderText = value;
if (IsPlaceholderShown)
{
ShowPlaceholder();
}
}
}
public override string Text
{
get
{
return IsPlaceholderShown ? string.Empty : textBox.Text;
}
set
{
if (string.IsNullOrEmpty(value))
{
ShowPlaceholder();
}
else
{
HidePlaceholder();
}
textBox.Text = value;
}
}
private bool IsPlaceholderShown { get; set; }
private string placeholderText = "";
public PlaceholderTextBox()
{
InitializeComponent();
textBox.Text = PlaceholderText;
IsPlaceholderShown = true;
}
private void textBox_Enter(object sender, EventArgs e)
{
HidePlaceholder();
}
private void textBox_Leave(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(textBox.Text))
{
ShowPlaceholder();
}
else
{
HidePlaceholder();
}
}
private void ShowPlaceholder()
{
IsPlaceholderShown = true;
textBox.Font = new Font(textBox.Font, FontStyle.Italic);
textBox.ForeColor = Color.Gray;
textBox.Text = PlaceholderText;
}
private void HidePlaceholder()
{
if (IsPlaceholderShown)
{
textBox.Text = string.Empty;
}
IsPlaceholderShown = false;
textBox.Font = new Font(textBox.Font, FontStyle.Regular);
textBox.ForeColor = Color.Black;
}
private void textBox_TextChanged(object sender, EventArgs e)
{
if (TextChanged != null)
{
TextChanged(this, e);
}
}
}
}