新人新问题,请大家帮帮忙啊!!!

dayuforever 2005-07-05 12:09:53

我想在窗体上动态地加载一系列的控件组比如label ,textbox ,picturebox,combobox ,tabcontrol等,
程序中开始时定义了System.Windows.Forms.Control的对象theControl,然后以theControl去逐个判断它真实的类型,比如是一个textbox 还是一个label,
然后再根据得到的具体的类型对这种类型的控件进行后续的操作。
现在的问题是,比如一个label1的控件,我用theControl判断了它属于label 类,那么我就想对label1的属性进行操作了,比如设置它的AutoSize了,BackStyle了等等,但我现在操作的仍然是theControl对象啊,它又不据有和支持这些属性所以也就无法设置了。那么我应该怎样从theControl对象转到实际我想要操作的控件类型上呢?
不知道上面描述清楚了没有,下面是部分代码:
If EachCtl(0) = "0" Then '通过标示判断为 Label
Lbl.Load(nowCtlCount(0) + 1) '将label控件组加一
theControl= Lbl(nowCtlCount(0) + 1) '将Control控件组加一
tmpA = Split(strAr, ",") '分割放置属性的字符串
With theControl
.Text = tmpA(0) 'Control类有此属性

.AutoSize = CBool(tmpA(1)) 'Control类不支持此属性

.BackStyle = CInt(tmpA(2)) ' Control类不支持此属性
End With
else
end if

我是刚从vb转到vb.net上来,正被.net弄得一头雾水。而现在这件事又催得很紧,已经要疯了,请各位一定要帮帮我啊!
...全文
128 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dayuforever 2005-07-07
  • 打赏
  • 举报
回复
大家都来看一看啊!
dayuforever 2005-07-06
  • 打赏
  • 举报
回复
然后我又重新生成该dll,并且将相关的dll都拷到了该工程的文件夹下。
终于可以调用函数了。
在该控件的vb6的版本中是用的ado来连接oracle数据库,
现在在.net中仍想沿用该控件用ado的部分,
而在别的窗体用ado.net。
这样可行吗?会引起冲突吗?
应该可以吧,可是为什么总是提示连接关闭或者不可用呢?
dayuforever 2005-07-06
  • 打赏
  • 举报
回复
已经imports了。
miaojx 2005-07-06
  • 打赏
  • 举报
回复
imports 了嗎?
dayuforever 2005-07-06
  • 打赏
  • 举报
回复
楼上的,通过查找帮助后我也使用了类似的方法,
通过System.Text.Encoding.Default来调用相应的对象方法。
其实是我在vb中使用了一个比较复杂的ocx,然后在.net中对其进行升级而需要做的一些改动。
但是在.net中我修改完生成了dll,
放到工程中为什么调不出我在控件里面写的函数呢,
老是提示函数名不是system.widows.forms.usercontrol的成员。
但对象浏览器中又可以看到我写的那些函数。
我已经添加引用了,也把该dll放到了工具箱中,
可是为什么就……
凨叔 2005-07-05
  • 打赏
  • 举报
回复
If TypeOf theControl Is System.Windows.Forms.Label Then
With CType(theControl, System.Windows.Forms.Label)
.Text = "abcdefg"
.AutoSize = CBool(tmpA(1))
.BackStyle = CInt(tmpA(2))
End With
End If
凨叔 2005-07-05
  • 打赏
  • 举报
回复
If TypeOf theControl Is System.Windows.Forms.Label Then
CType(theControl, System.Windows.Forms.Label).Text = "abcdefg"
End If
wangdeqing101 2005-07-05
  • 打赏
  • 举报
回复
关注
凨叔 2005-07-05
  • 打赏
  • 举报
回复
请问我怎样才可以计算如下字符的长度得到我想要的结果:
Function("中文")=4
Function("English")=7
呢?
-------------------------------------------------------------
.NET中如果需要得到字符串所占用的字节数,需要对字符串进行解码,如:
Dim s As String = "中文"
Dim intCount As Integer = System.Text.Encoding.Default.GetByteCount(s) 'intCount的值为4

Dim s As String = "English"
Dim intCount As Integer = System.Text.Encoding.Default.GetByteCount(s) 'intCount的值为7
dayuforever 2005-07-05
  • 打赏
  • 举报
回复
不要
For i = 1 To Len(字符串)
Dim c = Asc(Mid(字符串, i, 1))
If c >= 0 And c < 128 Then
字符串长度 = 字符串长度 + 1
Else
字符串长度 = 字符串长度 + 2
End If
Next
因为在数据入库的时候要对很多字符串长度判断,可能会影响效率。
dayuforever 2005-07-05
  • 打赏
  • 举报
回复
谢谢楼上的点拨,解了我多日的疑惑。
另外还想问一个比较弱的问题
以前在vb里用LenB函数可以得到字符的长度,包括中文字符可以按双字节计算。
但现在.net中不支持LenB函数,
只有Len,而且都是什么Unicode字符,我也搞不明白。
那么,请问我怎样才可以计算如下字符的长度得到我想要的结果:
Function(“中文”)=4
Function(“English”)=7
呢?

16,552

社区成员

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

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