diff --git a/Crypto Notepad/ChangeKeyForm.Designer.cs b/Crypto Notepad/ChangeKeyForm.Designer.cs index a6e8091..a64ac8d 100644 --- a/Crypto Notepad/ChangeKeyForm.Designer.cs +++ b/Crypto Notepad/ChangeKeyForm.Designer.cs @@ -28,12 +28,10 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.oldKeyTextBox = new System.Windows.Forms.TextBox(); - this.newKeyTextBox = new System.Windows.Forms.TextBox(); + this.oldKeyTextBox = new System.Windows.Forms.PlaceholderTextBox(); + this.newKeyTextBox = new System.Windows.Forms.PlaceholderTextBox(); this.acceptButton = new System.Windows.Forms.Button(); this.mainPanel = new System.Windows.Forms.Panel(); - this.oldKeyPlaceholder = new System.Windows.Forms.Label(); - this.newKeyPlaceholder = new System.Windows.Forms.Label(); this.lockPictureBox = new System.Windows.Forms.PictureBox(); this.showNewKeyPictureBox = new System.Windows.Forms.PictureBox(); this.showOldKeyPictureBox = new System.Windows.Forms.PictureBox(); @@ -51,6 +49,10 @@ private void InitializeComponent() this.oldKeyTextBox.Size = new System.Drawing.Size(177, 22); this.oldKeyTextBox.TabIndex = 0; this.oldKeyTextBox.UseSystemPasswordChar = true; + this.oldKeyTextBox.Placeholder = "Old key"; + this.oldKeyTextBox.PlaceholderActiveForeColor = System.Drawing.Color.DarkGray; + this.oldKeyTextBox.PlaceholderFont = new System.Drawing.Font("Segoe UI", 8.25F); + this.oldKeyTextBox.PlaceholderForeColor = System.Drawing.Color.DarkGray; this.oldKeyTextBox.TextChanged += new System.EventHandler(this.OldKeyTextBox_TextChanged); this.oldKeyTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.OldKeyTextBox_KeyDown); // @@ -61,9 +63,12 @@ private void InitializeComponent() this.newKeyTextBox.Size = new System.Drawing.Size(177, 22); this.newKeyTextBox.TabIndex = 1; this.newKeyTextBox.UseSystemPasswordChar = true; + this.newKeyTextBox.Placeholder = "New key"; + this.newKeyTextBox.PlaceholderActiveForeColor = System.Drawing.Color.DarkGray; + this.newKeyTextBox.PlaceholderFont = new System.Drawing.Font("Segoe UI", 8.25F); + this.newKeyTextBox.PlaceholderForeColor = System.Drawing.Color.DarkGray; this.newKeyTextBox.TextChanged += new System.EventHandler(this.NewKeyTextBox_TextChanged); this.newKeyTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.NewKeyTextBox_KeyDown); - this.newKeyTextBox.Leave += new System.EventHandler(this.NewKeyTextBox_Leave); // // acceptButton // @@ -79,8 +84,6 @@ private void InitializeComponent() // mainPanel // this.mainPanel.BackColor = System.Drawing.Color.White; - this.mainPanel.Controls.Add(this.oldKeyPlaceholder); - this.mainPanel.Controls.Add(this.newKeyPlaceholder); this.mainPanel.Controls.Add(this.lockPictureBox); this.mainPanel.Controls.Add(this.showNewKeyPictureBox); this.mainPanel.Controls.Add(this.showOldKeyPictureBox); @@ -92,32 +95,6 @@ private void InitializeComponent() this.mainPanel.Size = new System.Drawing.Size(269, 75); this.mainPanel.TabIndex = 6; // - // oldKeyPlaceholder - // - this.oldKeyPlaceholder.AutoSize = true; - this.oldKeyPlaceholder.Cursor = System.Windows.Forms.Cursors.IBeam; - this.oldKeyPlaceholder.Enabled = false; - this.oldKeyPlaceholder.ForeColor = System.Drawing.Color.DarkGray; - this.oldKeyPlaceholder.Location = new System.Drawing.Point(67, 16); - this.oldKeyPlaceholder.Name = "oldKeyPlaceholder"; - this.oldKeyPlaceholder.Size = new System.Drawing.Size(46, 13); - this.oldKeyPlaceholder.TabIndex = 8; - this.oldKeyPlaceholder.Text = "Old key"; - this.oldKeyPlaceholder.Click += new System.EventHandler(this.OldKeyPlaceholder_Click); - // - // newKeyPlaceholder - // - this.newKeyPlaceholder.AutoSize = true; - this.newKeyPlaceholder.Cursor = System.Windows.Forms.Cursors.IBeam; - this.newKeyPlaceholder.Enabled = false; - this.newKeyPlaceholder.ForeColor = System.Drawing.Color.DarkGray; - this.newKeyPlaceholder.Location = new System.Drawing.Point(67, 41); - this.newKeyPlaceholder.Name = "newKeyPlaceholder"; - this.newKeyPlaceholder.Size = new System.Drawing.Size(50, 13); - this.newKeyPlaceholder.TabIndex = 2; - this.newKeyPlaceholder.Text = "New key"; - this.newKeyPlaceholder.Click += new System.EventHandler(this.NewKeyPlaceholder_Click); - // // lockPictureBox // this.lockPictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; @@ -194,15 +171,13 @@ private void InitializeComponent() #endregion - private System.Windows.Forms.TextBox oldKeyTextBox; - private System.Windows.Forms.TextBox newKeyTextBox; + private System.Windows.Forms.PlaceholderTextBox oldKeyTextBox; + private System.Windows.Forms.PlaceholderTextBox newKeyTextBox; private System.Windows.Forms.Button acceptButton; private System.Windows.Forms.PictureBox showOldKeyPictureBox; private System.Windows.Forms.PictureBox showNewKeyPictureBox; private System.Windows.Forms.Panel mainPanel; private System.Windows.Forms.PictureBox lockPictureBox; private System.Windows.Forms.Label statusLabel; - private System.Windows.Forms.Label newKeyPlaceholder; - private System.Windows.Forms.Label oldKeyPlaceholder; } } \ No newline at end of file diff --git a/Crypto Notepad/ChangeKeyForm.cs b/Crypto Notepad/ChangeKeyForm.cs index a527746..bc40515 100644 --- a/Crypto Notepad/ChangeKeyForm.cs +++ b/Crypto Notepad/ChangeKeyForm.cs @@ -91,15 +91,7 @@ private void OldKeyTextBox_TextChanged(object sender, EventArgs e) else { acceptButton.Enabled = false; - } - if (oldKeyTextBox.Text.Length > 0) - { - oldKeyPlaceholder.Visible = false; - } - else - { - oldKeyPlaceholder.Visible = true; - } + } } private void NewKeyTextBox_TextChanged(object sender, EventArgs e) @@ -111,15 +103,7 @@ private void NewKeyTextBox_TextChanged(object sender, EventArgs e) else { acceptButton.Enabled = false; - } - if (newKeyTextBox.Text.Length > 0) - { - newKeyPlaceholder.Visible = false; - } - else - { - newKeyPlaceholder.Visible = true; - } + } } private void NewKeyPlaceholder_Click(object sender, EventArgs e) @@ -130,13 +114,6 @@ private void OldKeyPlaceholder_Click(object sender, EventArgs e) { oldKeyTextBox.Focus(); } - private void NewKeyTextBox_Leave(object sender, EventArgs e) - { - if (newKeyTextBox.Text.Length == 0) - { - newKeyPlaceholder.Visible = true; - } - } private void NewKeyTextBox_KeyDown(object sender, KeyEventArgs e) { diff --git a/Crypto Notepad/Crypto Notepad.csproj b/Crypto Notepad/Crypto Notepad.csproj index b64d696..c1bcc00 100644 --- a/Crypto Notepad/Crypto Notepad.csproj +++ b/Crypto Notepad/Crypto Notepad.csproj @@ -134,6 +134,9 @@ SettingsForm.cs + + Component + AboutFrom.cs diff --git a/Crypto Notepad/EnterKeyForm.Designer.cs b/Crypto Notepad/EnterKeyForm.Designer.cs index 45d7436..cf58c0e 100644 --- a/Crypto Notepad/EnterKeyForm.Designer.cs +++ b/Crypto Notepad/EnterKeyForm.Designer.cs @@ -29,28 +29,17 @@ protected override void Dispose(bool disposing) private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EnterKeyForm)); - this.keyTextBox = new System.Windows.Forms.TextBox(); this.okButton = new System.Windows.Forms.Button(); this.mainPanel = new System.Windows.Forms.Panel(); - this.encryptionKeyPlaceholder = new System.Windows.Forms.Label(); this.lockPictureBox = new System.Windows.Forms.PictureBox(); this.fileNameLabel = new System.Windows.Forms.Label(); this.showKeyPictureBox = new System.Windows.Forms.PictureBox(); + this.keyTextBox = new System.Windows.Forms.PlaceholderTextBox(); this.mainPanel.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.lockPictureBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.showKeyPictureBox)).BeginInit(); this.SuspendLayout(); // - // keyTextBox - // - this.keyTextBox.Location = new System.Drawing.Point(64, 37); - this.keyTextBox.Name = "keyTextBox"; - this.keyTextBox.Size = new System.Drawing.Size(177, 22); - this.keyTextBox.TabIndex = 0; - this.keyTextBox.UseSystemPasswordChar = true; - this.keyTextBox.TextChanged += new System.EventHandler(this.KeyTextBox_TextChanged); - this.keyTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.KeyTextBox_KeyDown); - // // okButton // this.okButton.Enabled = false; @@ -65,7 +54,6 @@ private void InitializeComponent() // mainPanel // this.mainPanel.BackColor = System.Drawing.Color.White; - this.mainPanel.Controls.Add(this.encryptionKeyPlaceholder); this.mainPanel.Controls.Add(this.lockPictureBox); this.mainPanel.Controls.Add(this.fileNameLabel); this.mainPanel.Controls.Add(this.keyTextBox); @@ -76,18 +64,6 @@ private void InitializeComponent() this.mainPanel.Size = new System.Drawing.Size(269, 75); this.mainPanel.TabIndex = 5; // - // encryptionKeyPlaceholder - // - this.encryptionKeyPlaceholder.AutoSize = true; - this.encryptionKeyPlaceholder.Cursor = System.Windows.Forms.Cursors.IBeam; - this.encryptionKeyPlaceholder.Enabled = false; - this.encryptionKeyPlaceholder.ForeColor = System.Drawing.Color.DarkGray; - this.encryptionKeyPlaceholder.Location = new System.Drawing.Point(68, 40); - this.encryptionKeyPlaceholder.Name = "encryptionKeyPlaceholder"; - this.encryptionKeyPlaceholder.Size = new System.Drawing.Size(82, 13); - this.encryptionKeyPlaceholder.TabIndex = 9; - this.encryptionKeyPlaceholder.Text = "Encryption key"; - // // lockPictureBox // this.lockPictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; @@ -123,6 +99,20 @@ private void InitializeComponent() this.showKeyPictureBox.TabStop = false; this.showKeyPictureBox.Click += new System.EventHandler(this.ShowKeyPictureBox_Click); // + // keyTextBox + // + this.keyTextBox.Location = new System.Drawing.Point(64, 37); + this.keyTextBox.Name = "keyTextBox"; + this.keyTextBox.Size = new System.Drawing.Size(177, 22); + this.keyTextBox.TabIndex = 0; + this.keyTextBox.UseSystemPasswordChar = true; + this.keyTextBox.Placeholder = "Encryption key"; + this.keyTextBox.PlaceholderActiveForeColor = System.Drawing.Color.DarkGray; + this.keyTextBox.PlaceholderFont = new System.Drawing.Font("Segoe UI", 8.25F); + this.keyTextBox.PlaceholderForeColor = System.Drawing.Color.DarkGray; + this.keyTextBox.TextChanged += new System.EventHandler(this.KeyTextBox_TextChanged); + this.keyTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.KeyTextBox_KeyDown); + // // EnterKeyForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -155,7 +145,6 @@ private void InitializeComponent() private System.Windows.Forms.Panel mainPanel; private System.Windows.Forms.Label fileNameLabel; private System.Windows.Forms.PictureBox lockPictureBox; - public System.Windows.Forms.TextBox keyTextBox; - private System.Windows.Forms.Label encryptionKeyPlaceholder; + public System.Windows.Forms.PlaceholderTextBox keyTextBox; } } \ No newline at end of file diff --git a/Crypto Notepad/EnterKeyForm.cs b/Crypto Notepad/EnterKeyForm.cs index 60d4922..2d825b4 100644 --- a/Crypto Notepad/EnterKeyForm.cs +++ b/Crypto Notepad/EnterKeyForm.cs @@ -43,12 +43,10 @@ private void KeyTextBox_TextChanged(object sender, EventArgs e) if (keyTextBox.Text.Length > 0) { okButton.Enabled = true; - encryptionKeyPlaceholder.Visible = false; } else { okButton.Enabled = false; - encryptionKeyPlaceholder.Visible = true; } } diff --git a/Crypto Notepad/MainForm.Designer.cs b/Crypto Notepad/MainForm.Designer.cs index a4c0eea..0f54ad4 100644 --- a/Crypto Notepad/MainForm.Designer.cs +++ b/Crypto Notepad/MainForm.Designer.cs @@ -115,10 +115,9 @@ public void InitializeComponent() this.showTrayMenu = new System.Windows.Forms.ToolStripMenuItem(); this.exitTrayMenu = new System.Windows.Forms.ToolStripMenuItem(); this.fileLockedPanel = new System.Windows.Forms.Panel(); - this.encryptionKeyPlaceholder = new System.Windows.Forms.Label(); this.fileLockedCloseButton = new System.Windows.Forms.Button(); this.fileLockedOkButton = new System.Windows.Forms.Button(); - this.fileLockedKeyTextBox = new System.Windows.Forms.TextBox(); + this.fileLockedKeyTextBox = new System.Windows.Forms.PlaceholderTextBox(); this.fileLockedShowKey = new System.Windows.Forms.PictureBox(); this.fileLockedLabel = new System.Windows.Forms.Label(); this.toolTip = new System.Windows.Forms.ToolTip(this.components); @@ -1058,7 +1057,6 @@ public void InitializeComponent() this.fileLockedPanel.Anchor = System.Windows.Forms.AnchorStyles.None; this.fileLockedPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(55)))), ((int)(((byte)(55)))), ((int)(((byte)(55))))); this.fileLockedPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.fileLockedPanel.Controls.Add(this.encryptionKeyPlaceholder); this.fileLockedPanel.Controls.Add(this.fileLockedCloseButton); this.fileLockedPanel.Controls.Add(this.fileLockedOkButton); this.fileLockedPanel.Controls.Add(this.fileLockedKeyTextBox); @@ -1073,19 +1071,6 @@ public void InitializeComponent() this.fileLockedPanel.Visible = false; this.fileLockedPanel.VisibleChanged += new System.EventHandler(this.FileLockedPanel_VisibleChanged); // - // encryptionKeyPlaceholder - // - this.encryptionKeyPlaceholder.AutoSize = true; - this.encryptionKeyPlaceholder.BackColor = System.Drawing.SystemColors.Window; - this.encryptionKeyPlaceholder.Cursor = System.Windows.Forms.Cursors.IBeam; - this.encryptionKeyPlaceholder.Enabled = false; - this.encryptionKeyPlaceholder.ForeColor = System.Drawing.Color.DarkGray; - this.encryptionKeyPlaceholder.Location = new System.Drawing.Point(11, 37); - this.encryptionKeyPlaceholder.Name = "encryptionKeyPlaceholder"; - this.encryptionKeyPlaceholder.Size = new System.Drawing.Size(82, 13); - this.encryptionKeyPlaceholder.TabIndex = 12; - this.encryptionKeyPlaceholder.Text = "Encryption key"; - // // fileLockedCloseButton // this.fileLockedCloseButton.Cursor = System.Windows.Forms.Cursors.Hand; @@ -1125,6 +1110,10 @@ public void InitializeComponent() this.fileLockedKeyTextBox.Size = new System.Drawing.Size(231, 22); this.fileLockedKeyTextBox.TabIndex = 8; this.fileLockedKeyTextBox.UseSystemPasswordChar = true; + this.fileLockedKeyTextBox.Placeholder = "Encryption key"; + this.fileLockedKeyTextBox.PlaceholderActiveForeColor = System.Drawing.Color.DarkGray; + this.fileLockedKeyTextBox.PlaceholderFont = new System.Drawing.Font("Segoe UI", 8.25F); + this.fileLockedKeyTextBox.PlaceholderForeColor = System.Drawing.Color.DarkGray; this.fileLockedKeyTextBox.TextChanged += new System.EventHandler(this.FileLockedKeyTextBox_TextChanged); this.fileLockedKeyTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FileLockedKeyTextBox_KeyDown); // @@ -1330,8 +1319,7 @@ public void InitializeComponent() private System.Windows.Forms.ContextMenuStrip trayMenu; private System.Windows.Forms.ToolStripMenuItem showTrayMenu; private System.Windows.Forms.ToolStripMenuItem exitTrayMenu; - private System.Windows.Forms.Label encryptionKeyPlaceholder; - protected internal System.Windows.Forms.TextBox fileLockedKeyTextBox; + protected internal System.Windows.Forms.PlaceholderTextBox fileLockedKeyTextBox; protected internal System.Windows.Forms.Panel richTextBoxPanel; protected internal System.Windows.Forms.Label searchFindNextButton; protected internal System.Windows.Forms.Label searchCloseButton; diff --git a/Crypto Notepad/MainForm.cs b/Crypto Notepad/MainForm.cs index cd51621..99ca30a 100644 --- a/Crypto Notepad/MainForm.cs +++ b/Crypto Notepad/MainForm.cs @@ -1625,11 +1625,9 @@ private void FileLockedKeyTextBox_TextChanged(object sender, EventArgs e) if (fileLockedKeyTextBox.Text.Length > 0) { fileLockedOkButton.Enabled = true; - encryptionKeyPlaceholder.Visible = false; } else { - encryptionKeyPlaceholder.Visible = true; fileLockedOkButton.Enabled = false; } } diff --git a/Crypto Notepad/PlaceholderTextBox.cs b/Crypto Notepad/PlaceholderTextBox.cs new file mode 100644 index 0000000..5aaad18 --- /dev/null +++ b/Crypto Notepad/PlaceholderTextBox.cs @@ -0,0 +1,257 @@ +using System.Drawing; +using System.ComponentModel; + +namespace System.Windows.Forms +{ + public class PlaceholderTextBox : TextBox + { + #region Fields + + #region Protected Fields + + protected string _placeholderText = "Default placeholder"; //The placeholder text + protected Color _placeholderColor; //Color of the placeholder when the control does not have focus + protected Color _placeholderActiveColor; //Color of the placeholder when the control has focus + + #endregion + + #region Private Fields + + private Panel placeholderContainer; //Container to hold the placeholder + private Font placeholderFont; //Font of the placeholder + private SolidBrush placeholderBrush; //Brush for the placeholder + + #endregion + + #endregion + + #region Constructors + + public PlaceholderTextBox() + { + Initialize(); + } + + #endregion + + #region Private Methods + + /// + /// Initializes placeholder properties and adds CtextBox events + /// + private void Initialize() + { + //Sets some default values to the placeholder properties + _placeholderColor = Color.LightGray; + _placeholderActiveColor = Color.Gray; + placeholderFont = Font; + placeholderBrush = new SolidBrush(_placeholderActiveColor); + placeholderContainer = null; + + //Draw the placeholder, so we can see it in design time + DrawPlaceholder(); + + //Eventhandlers which contains function calls. + //Either to draw or to remove the placeholder + Enter += new EventHandler(ThisHasFocus); + Leave += new EventHandler(ThisWasLeaved); + TextChanged += new EventHandler(ThisTextChanged); + } + + /// + /// Removes the placeholder if it should + /// + private void RemovePlaceholder() + { + if (placeholderContainer != null) + { + Controls.Remove(placeholderContainer); + placeholderContainer = null; + } + } + + /// + /// Draws the placeholder if the text length is 0 + /// + private void DrawPlaceholder() + { + if (placeholderContainer == null && TextLength <= 0) + { + placeholderContainer = new Panel(); // Creates the new panel instance + placeholderContainer.Paint += new PaintEventHandler(placeholderContainer_Paint); + placeholderContainer.Invalidate(); + placeholderContainer.Click += new EventHandler(placeholderContainer_Click); + Controls.Add(placeholderContainer); // adds the control + } + } + + #endregion + + #region Eventhandlers + + #region Placeholder Events + + private void placeholderContainer_Click(object sender, EventArgs e) + { + Focus(); //Makes sure you can click wherever you want on the control to gain focus + } + + private void placeholderContainer_Paint(object sender, PaintEventArgs e) + { + //Setting the placeholder container up + placeholderContainer.Location = new Point(2, 0); // sets the location + placeholderContainer.Height = Height; // Height should be the same as its parent + placeholderContainer.Width = Width; // same goes for width and the parent + placeholderContainer.Anchor = AnchorStyles.Left | AnchorStyles.Right; // makes sure that it resizes with the parent control + + + + if (ContainsFocus) + { + //if focused use normal color + placeholderBrush = new SolidBrush(_placeholderActiveColor); + } + + else + { + //if not focused use not active color + placeholderBrush = new SolidBrush(_placeholderColor); + } + + //Drawing the string into the panel + Graphics g = e.Graphics; + g.DrawString(_placeholderText, placeholderFont, placeholderBrush, new PointF(-2f, 1f));//Take a look at that point + //The reason I'm using the panel at all, is because of this feature, that it has no limits + //I started out with a label but that looked very very bad because of its paddings + + } + + #endregion + + #region CTextBox Events + + private void ThisHasFocus(object sender, EventArgs e) + { + //if focused use focus color + placeholderBrush = new SolidBrush(_placeholderActiveColor); + + //The placeholder should not be drawn if the user has already written some text + if (TextLength <= 0) + { + RemovePlaceholder(); + DrawPlaceholder(); + } + } + + private void ThisWasLeaved(object sender, EventArgs e) + { + //if the user has written something and left the control + if (TextLength > 0) + { + //Remove the placeholder + RemovePlaceholder(); + } + else + { + //But if the user didn't write anything, Then redraw the control. + Invalidate(); + } + } + + private void ThisTextChanged(object sender, EventArgs e) + { + //If the text of the textbox is not empty + if (TextLength > 0) + { + //Remove the placeholder + RemovePlaceholder(); + } + else + { + //But if the text is empty, draw the placeholder again. + DrawPlaceholder(); + } + } + + #region Overrided Events + + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + //Draw the placeholder even in design time + DrawPlaceholder(); + } + + protected override void OnInvalidated(InvalidateEventArgs e) + { + base.OnInvalidated(e); + //Check if there is a placeholder + if (placeholderContainer != null) + //if there is a placeholder it should also be invalidated(); + placeholderContainer.Invalidate(); + } + + #endregion + + #endregion + + #endregion + + #region Properties + [Category("Placeholder attribtues")] + [Description("Sets the text of the placeholder")] + public string Placeholder + { + get { return _placeholderText; } + set + { + _placeholderText = value; + Invalidate(); + } + } + + [Category("Placeholder attribtues")] + [Description("When the control gaines focus, this color will be used as the placeholder's forecolor")] + public Color PlaceholderActiveForeColor + { + get { return _placeholderActiveColor; } + + set + { + _placeholderActiveColor = value; + Invalidate(); + } + } + + [Category("Placeholder attribtues")] + [Description("When the control looses focus, this color will be used as the placeholder's forecolor")] + public Color PlaceholderForeColor + { + get { return _placeholderColor; } + + set + { + _placeholderColor = value; + Invalidate(); + } + } + + [Category("Placeholder attribtues")] + [Description("The font used on the watermark. Default is the same as the control")] + public Font PlaceholderFont + { + get + { + return placeholderFont; + } + + set + { + placeholderFont = value; + Invalidate(); + } + } + + #endregion + } +}