TextBox 问题

Corny 2002-03-21 09:47:06
小问题一个,但我真不知道怎么解决。在我将 TextBox 的BorderStyle 属性设为FixSingle 的时候,为什么边框总是只能显示黑色,我怎样才能改变它的边框颜色。
(:本人很少用到 API 进行 GDI 编程,但您不妨教教我 )
...全文
41 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Corny 2002-03-30
  • 打赏
  • 举报
回复
错误发生在Dim g as Graphics=e.Graphics这一句,错误内容为:未将对象引用放置到对象实例中。
Corny 2002-03-30
  • 打赏
  • 举报
回复
难道不能通过重载TextBox本身的OnPaint来实现吗?为什么呢?
重载TextBox的OnPaint方法后,不能将控件放到Form中
acptvb 2002-03-29
  • 打赏
  • 举报
回复
感谢您使用微软产品。

在VB.NET中,您可以通过重载Form类的OnPaint方法,来实现您需要的效果。
1,首先,将TextBox1的BorderStyle属性设置为None;
2,将TextBox1的AutoSize属性设置为False;
下面,提供一段示例代码,来实现需要的效果,供您参考:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
Dim g As Graphics = e.Graphics
g.DrawRectangle(New Pen(Color.Red), TextBox1.Location.X - 2, TextBox1.Location.Y - 2, TextBox1.Width + 2, TextBox1.Height + 2)
g.DrawRectangle(New Pen(Color.Blue), Button1.Location.X - 1, Button1.Location.Y - 1, Button1.Width + 1, Button1.Height + 1)
g.Dispose()
End Sub

关于Paint的更详细信息及其示例程序,请参考微软官方网站:
http://www.gotdotnet.com/team/windowsforms/windowsformspainting.aspx


— 微软全球技术中心 VB支持中心

本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
wenzm 2002-03-28
  • 打赏
  • 举报
回复
Ms也太差了,做个这事,还这么麻烦
做界面啊,Delphi No1
Corny 2002-03-27
  • 打赏
  • 举报
回复
就是说没有效果呀
代码其实很简单的呀

mybase.OnPaint(e)
Dim mPen as system.drawing.Pen=new system.drawing.pen(Color.Red)
'这里还对e.Rect..进行了缩小
e.graphics.DrawRect...(mPen,e.Rect..)

仍然是没有效果
因为上网的机器里没装.Net,所以代码没完整,但意思就是那样的。
dlmhtao 2002-03-26
  • 打赏
  • 举报
回复
以上方法我曾经试过,可是为什么在Botton的Click事件中好用,而在FormLoad事件中不好用?
软件架构 2002-03-26
  • 打赏
  • 举报
回复
Corny()
=========
可以把你的代码贴出来看看吗?
我也重载过OnPaint,但是没有效果?
谢谢
Corny 2002-03-26
  • 打赏
  • 举报
回复
我曾试着重载OnPaint方法,但重载后TextBox的显示都成了问题了,很多的TextBox事件不能正确反应出来,虽然我用了Mybase.OnPaint,仍然不能正确刷新,应该是个BUG吧。
acptvb 2002-03-24
  • 打赏
  • 举报
回复
感谢您使用微软产品。

您可以通过以下方法改变TextBox边框的颜色。

首先将该TextBox的Borderstyle设置为FixedSingle,然后在Form1_Load事件或者其他地方添加如下代码:

Dim g As Graphics = TextBox1.CreateGraphics()
g.DrawRectangle(New Pen(Color.Red), 0, 0, TextBox1.Width - 1, TextBox1.Height - 1)

就可以将TextBox1的边框改为红色。

关于Graphics对象您可以参考以下文章:

.NET Framework Developer's Guide Creating a Graphics Object
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/_gdiplus_creating_a_graphics_object_usecsharp.asp


微软全球技术中心 VB技术支持
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
kangqiao5 2002-03-22
  • 打赏
  • 举报
回复
继承以后呢??
怎么办?需要重载那个方法?如何重载?
谢谢!!!
tg123 2002-03-21
  • 打赏
  • 举报
回复
自治继承控件
textbox

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧