怎样用VB.NET创建Windows窗体控件

zxc_123_sc 2010-05-06 01:37:09
我在网上下了一些电子书,并依照其方法创建windows窗体控件,但总是在提示错误?不知道什么原因,有那位仁兄有在VS2008下运行的实例没有?谢谢了!

首先在创建工程时,电子书上说要创建“Windows控件库”项目,但我的VS下只有“Windows窗体控件库”,有什么影响吗?
其次在代码中:

Inherit System.Windows.Forms.Textbox,始终显示错误

但改成
Inherit System.Windows.Forms.UserControls则没有问题,我的项目中文件已改成了NumTextbox了,谢谢!急!
...全文
560 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxc_123_sc 2010-05-10
  • 打赏
  • 举报
回复
谢谢大家,刚接触VB,有很多不是很懂,对Windows平台下VB.NET面向对象的特性很晕,以前对Linux C的过程特性比较熟悉点。由于现在做一些东西都是Windows平台下的,所以不得不从头学起。

我是想做一个封装AxMSComm的控件(这个是VB6.0中的,VB2008中是serialport控件),它在接收到一些字符串string1之后,将其进行一些编码和校验处理之后的字符串string2,然后产生一个事件通知外部用户接收处理过后的字符串string2;同理我在发送的时候调用该封装过后的控件,经过处理之后将字符串发送到串口。

PS:
1.应该怎样继承基类的事件,同时我怎样产生自己的事件?
2.我使用上面NumTextBox(只能输入数字)控件建立应用程序时,却发现没有TextChange事件了,这是为什么?
3.谁有这方面的电子书给我发一份吧,我在网上找了些都不是很满意。

诚挚谢谢!
hztltgg 2010-05-10
  • 打赏
  • 举报
回复
1.你要分清Control 和 UserControl
Control是控件的基类,TextBox等所有控件都继承与他,包括UserControl。
UserControl是组合控件,其实就是别的控件放在他里面的一个容器。
你要选择好到底从那个控件继承。如果是要个只能输入数字的textbox,那么你从TextBox控件继承更好。

2.如果你要用UserControl控件,那么你建立Windows窗体控件库,否则一般直接用类库模板就可以了

3 要实现这个数字文本框,
Public Class NumTextbox

Inherits System.Windows.Forms.TextBox

Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)


'MyBase.OnKeyPress(e)
'改写这个过程


End Sub

End Class
shqdb888 2010-05-10
  • 打赏
  • 举报
回复
学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
zxc_123_sc 2010-05-10
  • 打赏
  • 举报
回复
好的,我试验过了,是的,谢谢哈
Forrest23 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zxc_123_sc 的回复:]
谢谢,不需要继承Textbox的属性吗?而且我希望做成控件(.DLL)的形式,以便别的应用程序调用?
[/Quote]

放一个Textbox上去就等于继承了Textbox的属性,上面生成出来的就是.dll
zxc_123_sc 2010-05-07
  • 打赏
  • 举报
回复
谢谢,不需要继承Textbox的属性吗?而且我希望做成控件(.DLL)的形式,以便别的应用程序调用?
Forrest23 2010-05-07
  • 打赏
  • 举报
回复

'1.新建一个 Windows窗口控件库程序
'2.在界面上放一个TextBox控件
'3.写下面的代码
Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Char.IsDigit(e.KeyChar) And Char.IsControl(e.KeyChar) Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
'4.运行试试看 是不是只能输入数字
han13726280172 2010-05-06
  • 打赏
  • 举报
回复
你试试下用VS2003版吧,那个比较好懂。。。。。
zxc_123_sc 2010-05-06
  • 打赏
  • 举报
回复
什么是:

添加引用了么?导入命名空间了么?
zxc_123_sc 2010-05-06
  • 打赏
  • 举报
回复
为类指定的基类“System.Windows.Forms.Textbox”不能与它的其它分部类型之一的基类“System.Windows.Forms.UserControl”不同
兔子-顾问 2010-05-06
  • 打赏
  • 举报
回复
-_-

错误提示是什么,添加引用了么?导入命名空间了么?
zxc_123_sc 2010-05-06
  • 打赏
  • 举报
回复
不对呀,我创建的项目是“Windows窗口控件库”,而不是“Windows窗体应用程序”希望能做一个自己需要的控件,如电子书上做的是一个只能输入数字的textbox,即便用以上的代码我Copy到VS2008也发生错误呀?
兔子-顾问 2010-05-06
  • 打赏
  • 举报
回复
其实最简单。你新建一个windows程序,然后新建一个类。这样写就是了。

Public Class MyTextbox
Inherits TextBox
Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
MyBase.OnKeyDown(e)
MsgBox(e.KeyCode)
End Sub
End Class
在码农的生活中,很多级码农都有这样的经历,会被一个小小的技术问题拦住,然后进度跟不上了,被老板XXXX一大通了。心情不爽了。 好吧,这个曾经是我遇到拦路虎之一。但事实上不是什么大技术。技术就是一层纸,破了就破了。 这是一个关于如何跨窗体操作控件或过程的一个例子。比如,你想用窗体A的按键来执行窗体B的文本框变色。 Imports System Imports System.Threading Imports System.Text Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load CheckForIllegalCrossThreadCalls = False '不写这行,会出错,不允许线程的数据写到TextBox1.Text 中去。 Form2.Show() End Sub Private Sub form1_FormClosing(sender As Object, e As EventArgs) Handles Me.FormClosing ' If runThread.IsAlive = True Then runThread.Abort() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '用的是委托方式 Me.Invoke(New MethodInvoker(AddressOf THREAD2)) End Sub Private Sub THREAD2() Static j As Integer j = j + 1 TextBox1.Text = " 这是 [线程] 操作" & vbCrLf & _ " Button2被点了: " & j & " 次" & vbCrLf & "要求是from2.textbox.text= textbox1.text 。[问题]但为什么不能成功显示呢?" End Sub Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged Form2.TextBox1.Text = TextBox1.Text End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Static j As Integer j = j + 1 TextBox1.Text = " 这是 [非线程] 操作" & vbCrLf & _ "Button3 点击了: " & j & " 次" & vbCrLf & _ "要求是from2.textbox.text= textbox1.text, 可以成功显示,这个是对的。" End Sub End Class

16,555

社区成员

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

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