1.å¨é¡¹ç®ä¸å³å»ï¼æ·»å ï¼ç¨æ·æ§ä»¶ã以WatermarkTextBox.cså½å.
2.æ·»å å½å空é´using System.Runtime.InteropServices; å 为DllImportæ¯System.Runtime.InteropServiceå½åæ§ä»¶ä¸çä¸ä¸ªå±æ§ç±»ï¼
å¨ WatermarkTextBox.csä¸æ·»å 代ç å¦ä¸
 public partial class WatermarkTextBox : TextBox     //å°æ¤æ§ä»¶ç继æ¿ç±»åä»UserControlæ¹æTextBoxãå³ç»§æ¿TextBoxæ§ä»¶çææåè½ã
   {
       public WatermarkTextBox()
       {
           InitializeComponent();
       }
Â
       private const uint ECM_FIRST = 0x1500;
       private const uint EM_SETCUEBANNER = ECM_FIRST + 1;
      Â
       //éè¿SendMessageåéEM_SETCUEBANNERæ¶æ¯ï¼å³å¯è¾¾å°æ·»å æ°´å°æåçææã
       [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
       static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, uint wParam, [MarshalAs(UnmanagedType.LPWStr)]string lParam);
Â
       private string watermarkText;
       public string WatermarkText
       {
           get { return watermarkText; }
           set
           {
               watermarkText = value;
               SetWatermark(watermarkText);
           }
       }
Â
       private void SetWatermark(string watermarkText)
       {
           SendMessage(this.Handle,EM_SETCUEBANNER,0,watermarkText);
       }
   }
3.è¿è¡ï¼å°æ¥éçé£ä¸è¡ä»£ç å é¤ã
4.å³å»é¡¹ç®ï¼éæ°çæãå¨å·¥å ·æ ä¸ï¼é¡¹ç®åä¸ï¼å¯ä»¥çå°èªå®ä¹æ§ä»¶WatermarkTextBox,å°å ¶å¦æ£å¸¸æ§ä»¶ä¸æ ·æå°formä¸å³å¯ä½¿ç¨ï¼
è®¾ç½®å ¶å±æ§WatermarkTextçå¼ï¼å³æ¾ç¤ºæ°´å°æ示ææã