Visual Basic中dlgInfo赋值语句+号报语法错误的原因及解决方法
问题原因
- 核心问题是Visual Basic默认按行识别独立语句,你第一行的赋值语句在
vbCrLf后直接换行,没有标记行延续,编译器会把第二行开头的" Tanggal Lahir : "识别为独立的非法语句,自然会抛出语法错误。 - 额外优化点:VB中做字符串拼接更推荐用
&运算符而非+,+遇到数值类型时会优先执行算术加法,容易触发隐式类型转换报错,&则会强制将两边操作数转为字符串后拼接,稳定性更高。
修复方案
方案1:显式加行续符(兼容所有VB版本)
在第一行末尾加 _(空格加下划线)标记下一行是当前语句的延续,同时把+替换为&,代码如下:
dlgInfo.Show() dlgInfo.txtInfo.Text = " Nama : " & txtnama.Text & vbCrLf _ & " Tanggal Lahir : " & timTanggalLahir.Text & vbCrLf & " Jenis Kelamin : " & jenis_kelamin & vbCrLf & " Agama : " & boAgama.Text & vbCrLf & " Pekerjaan : " & lstPekerjaan.Text & vbCrLf & " Hobi : " & hobi & vbCrLf & " Kendaraan : " & lstKendaraan.Text & vbCrLf & " Motto Hidup : " & txtMottoHidup.Text
注意第二行开头也要加&和前面的内容拼接。
方案2:用隐式行续(VB 2010及以上版本支持)
新版VB不需要显式加下划线,直接在第一行末尾的拼接运算符后面换行即可:
dlgInfo.Show() dlgInfo.txtInfo.Text = " Nama : " & txtnama.Text & vbCrLf & " Tanggal Lahir : " & timTanggalLahir.Text & vbCrLf & " Jenis Kelamin : " & jenis_kelamin & vbCrLf & " Agama : " & boAgama.Text & vbCrLf & " Pekerjaan : " & lstPekerjaan.Text & vbCrLf & " Hobi : " & hobi & vbCrLf & " Kendaraan : " & lstKendaraan.Text & vbCrLf & " Motto Hidup : " & txtMottoHidup.Text
方案3:更整洁的写法(推荐)
用字符串插值减少大量拼接运算符,可读性更高:
dlgInfo.Show() dlgInfo.txtInfo.Text = $" Nama : {txtnama.Text}{vbCrLf} Tanggal Lahir : {timTanggalLahir.Text}{vbCrLf} Jenis Kelamin : {jenis_kelamin}{vbCrLf} Agama : {boAgama.Text}{vbCrLf} Pekerjaan : {lstPekerjaan.Text}{vbCrLf} Hobi : {hobi}{vbCrLf} Kendaraan : {lstKendaraan.Text}{vbCrLf} Motto Hidup : {txtMottoHidup.Text}"
内容的提问来源于stack exchange,提问作者zuzuzure
相关产品推荐
相关产品推荐

