金风玉露19楼,伽蓝寺听雨声盼永恒,四不放过是什么
public partial class mypicturertextbox : usercontrol { public mypicturertextbox() { initializecomponent(); this.borderstyle = borderstyle.fixedsingle; } private image userimg; [description("文本框里的图片")] public image userimg { get { return userimg; } set { if (value != null) { this.img.image = value; } userimg = value; } } private string txt; [description("输入的文本")] public string txt { get { return txt; } set { if (!string.isnullorempty(value)) { this.textbox.text = value; } txt = value; } } [description("textchanged事件")] public event eventhandler mytextchanged; private void textbox_textchanged(object sender, eventargs e) { mytextchanged?.invoke(sender, e); } /// <summary> /// 获得当前进程,以便重绘控件 /// </summary> /// <param name="hwnd"></param> /// <returns></returns> [system.runtime.interopservices.dllimport("user32.dll")] static extern intptr getwindowdc(intptr hwnd); [system.runtime.interopservices.dllimport("user32.dll")] static extern int releasedc(intptr hwnd, intptr hdc); protected override void wndproc(ref message m) { base.wndproc(ref m); if (m.msg == 0xf || m.msg == 0x133) { //拦截系统消息,获得当前控件进程以便重绘。 //一些控件(如textbox、button等)是由系统进程绘制,重载onpaint方法将不起作用. //所有这里并没有使用重载onpaint方法绘制textbox边框。 // //msdn:重写 onpaint 将禁止修改所有控件的外观。 //那些由 windows 完成其所有绘图的控件(例如 textbox)从不调用它们的 onpaint 方法, //因此将永远不会使用自定义代码。请参见您要修改的特定控件的文档, //查看 onpaint 方法是否可用。如果某个控件未将 onpaint 作为成员方法列出, //则您无法通过重写此方法改变其外观。 // //msdn:要了解可用的 message.msg、message.lparam 和 message.wparam 值, //请参考位于 msdn library 中的 platform sdk 文档参考。可在 platform sdk(“core sdk”一节) //下载中包含的 windows.h 头文件中找到实际常数值,该文件也可在 msdn 上找到。 intptr hdc = getwindowdc(m.hwnd); if (hdc.toint32() == 0) { return; } //只有在边框样式为fixedsingle时自定义边框样式才有效 if (this.borderstyle == borderstyle.fixedsingle) { //边框width为1个像素 system.drawing.pen pen = new pen(brushes.darkred, 1); //绘制边框 system.drawing.graphics g = graphics.fromhdc(hdc); g.smoothingmode = system.drawing.drawing2d.smoothingmode.antialias; g.drawrectangle(pen, 0, 0, this.width - 1, this.height - 1); pen.dispose(); } //返回结果 m.result = intptr.zero; //释放 releasedc(m.hwnd, hdc); } } protected override void onresize(eventargs e) { base.onresize(e); this.refresh(); } }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论