我正在Visual Studio 2015中制作一个Windows vb.net窗体应用程序,用户可以在其中通过从文件对话框浏览器或从Web URL导入在PictureBox中预览图像。如果用户选择使用文件对话框从计算机导入它,则预览将在选择图像文件后自动加载。 如果用户不小心填写了网址和文件对话框,我想清除网址的文本框(称为url_cover),该文本框显示在文件对话框中导入的文件名(称为Browse.FileName)和PictureBox预览(称为Preview),并且还显示一个MessageBox,告诉用户仅使用一种导入选项即可重试。
我已经尝试过制作一个基本的if语句(直到一切正常为止):
If url_cover.Text <> Nothing And Browse.FileName <> Nothing Then
MsgBox("Please do not import image using both file browser and URL.", [vbOKOnly], "Warning")
url_cover.Clear() Browse.FileName = Nothing preview.Enabled = False
我期望如果同时填充url和文件浏览器,所有这些事情都会发生,但是我出现一个错误,告诉我第二条指令(即url_cover.Clear())之后期望语句的结尾。 我尝试切换必须执行这三个指令的顺序,但是每次相同时,第二条指令之后,就应该声明语句的结尾。 希望我的解释清楚了,我的问题是,如果If语句的条件完成,我如何执行两条以上的指令。
答案 0 :(得分:2)
如果您希望在满足条件的情况下执行多个语句,则需要将其包含在以End If
结尾的块中。
您的代码仅在满足条件时才执行消息框,然后在满足条件或不满足条件时尝试执行其余操作。由于尝试将多条语句放在一行上,因此出现End Of Statement Expected
错误。
试试这个..
If url_cover.Text <> Nothing And Browse.FileName <> Nothing Then
MsgBox("Please do not import image using both file browser and URL.", [vbOKOnly], Warning")
url_cover.Clear()
Browse.FileName = Nothing
preview.Enabled = False
End If
答案 1 :(得分:-1)
尝试一下...如果需要将语句放在一行上,可以使用:
来分隔语句。
If Not String.IsNullOrEmpty(url_cover.Text) AndAlso Not String.IsNullOrEmpty(Browse.FileName) Then MsgBox("Please do not import image using both file browser and URL.", [vbOKOnly], "Warning") : url_cover.Clear() : Browse.FileName = String.Empty : preview.Enabled = False
或阻止...
If url_cover.Text <> Nothing And Browse.FileName <> Nothing Then
MsgBox("Please do not import image using both file browser and URL.", [vbOKOnly], "Warning")
url_cover.Clear()
Browse.FileName = Nothing
preview.Enabled = False
End If
恕我直言,请查看String.IsNullOrEmpty,Multiple statements in one line和AndAlso operator。如果语句可能会变长,晦涩难懂的可读性等,也要尽量避免使用:
,但是使用它没有什么错。
如果您认为此帖子可以改进,请考虑添加评论。