2013-08-28 27 views
5

Chương trình của tôi: Chỉ có một hộp văn bản. Tôi đang viết mã bằng ngôn ngữ C#.Hình mờ cho Hộp văn bản

Mục tiêu của tôi: Để hiển thị văn bản/hình mờ trong hộp văn bản: 'Vui lòng nhập tên của bạn'. Vì vậy, khi người dùng nhấp vào hộp văn bản, văn bản/hình mờ mặc định được xóa/xóa để người dùng có thể nhập tên của anh ấy vào hộp văn bản.

Vấn đề của tôi: Tôi đã thử các mã khác nhau có sẵn trực tuyến nhưng không có mã nào trong số đó có vẻ phù hợp với tôi. Vì vậy, tôi nghĩ rằng tôi nên hỏi ở đây cho một mã đơn giản. Tôi đã tìm thấy một mã trực tuyến nhưng điều đó dường như không làm việc:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      SetWatermark("Enter a text here..."); 
     } 

     private void SetWatermark(string watermark) 
     { 
      textBox1.Watermark = watermark; 
     } 
    } 
} 

Lỗi:

Error 1 'System.Windows.Forms.TextBox' does not contain a definition for 'Watermark' and no extension method 'Watermark' accepting a first argument of type 'System.Windows.Forms.TextBox' could be found (are you missing a using directive or an assembly reference?)

Xin vui lòng, nếu bạn có bất cứ đề nghị khác cho những gì tôi đang hướng tới, tôi sẽ thực sự đánh giá cao nó. Tôi mệt mỏi nhiều ví dụ trực tuyến nhưng tất cả đều gây nhầm lẫn/không làm việc. Cảm ơn vì sự giúp đỡ của bạn trước đó. :)

+0

không có hình mờ cho hộp văn bản. Bạn có thể tạo màu của riêng bạn bằng cách tô xám văn bản, sau đó làm cho màu đen nếu chúng đặt một thứ gì đó trong đó – Jonesopolis

+0

Bạn luôn có thể đặt tiền cảnh thành WhiteSmoke hoặc một cái gì đó và sau đó móc vào sự kiện GotFocus để xóa/thay đổi màu. – DanteTheEgregore

Trả lời

27

vừa thử điều này. Dường như nó hoạt động tốt trong một dự án Windows Forms mới.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     textBox1.ForeColor = SystemColors.GrayText; 
     textBox1.Text = "Please Enter Your Name"; 
     this.textBox1.Leave += new System.EventHandler(this.textBox1_Leave); 
     this.textBox1.Enter += new System.EventHandler(this.textBox1_Enter); 
    } 

    private void textBox1_Leave(object sender, EventArgs e) 
    { 
     if (textBox1.Text.Length == 0) 
     { 
      textBox1.Text = "Please Enter Your Name"; 
      textBox1.ForeColor = SystemColors.GrayText; 
     } 
    } 

    private void textBox1_Enter(object sender, EventArgs e) 
    { 
     if (textBox1.Text == "Please Enter Your Name") 
     { 
      textBox1.Text = ""; 
      textBox1.ForeColor = SystemColors.WindowText; 
     } 
    } 
} 
+0

Tuyệt vời! Đến điểm! Cảm ơn rất nhiều Jonesy! :) – Smith

+3

Dường như bạn đang * Phát minh lại bánh xe *. Tại sao không sử dụng 'EM_SETCUEBANNER' –

+2

Tôi không nghĩ câu trả lời này sẽ hoạt động tốt với DataBinding. – LarsTech

Các vấn đề liên quan