日期:2014-05-18  浏览次数:20999 次

重写TextBox
如何重写TextBox
使它能实现:点击TextBox出现一个放大镜图标,失去焦点时放大镜也同时消失

------解决方案--------------------
继承TextBox以后,重写OnPaint 方法,在OnPaint方法里实现 显示放大镜的代码。

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

namespace MyTextBox
{
public partial class MyTextBox : TextBox
{
bool isMouseClick = false;
public MyTextBox()
{
InitializeComponent();
}
protected override void OnMouseClick(MouseEventArgs e)
{
base.OnMouseClick(e);
//
isMouseClick = true;
isMouseLeave = false;
Refresh();//产生点击事件以后,重画控件,NET自己会调用OnPaint()方法
}
protected override void OnMouseLeave(EventArgs e)
{
base.OnMouseLeave(e);
//
isMouseClick = false;
Refresh();//鼠标离开以后,重画控件,NET自己会调用OnPaint()方法
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);//这里是 TextBox 原有的绘制代码
//下面可以绘制放大镜

if (isMouseClick)
{
//写绘制放大镜代码
}
}
}
}
------解决方案--------------------
参考一下
http://www.cnblogs.com/tuyile006/archive/2006/12/05/582381.html
------解决方案--------------------
mark
------解决方案--------------------
做一个自定义用户控件,从TextBox继承
------解决方案--------------------
up~~
------解决方案--------------------
CSharpProgrammer(风儿吹过):

textbox的onpaint不会触发吧,你那个程序应该不行的。
------解决方案--------------------
没有实践,光凭想象。textbox的onpaint事件不会发生
------解决方案--------------------
up