Как сделать заявление, которое делает более 2, если условие выполнено? - PullRequest
0 голосов
/ 26 марта 2019

Я создаю приложение для формы Windows vb.net в Visual Studio 2015, где пользователь может предварительно просмотреть изображение в PictureBox, импортировав его из файлового браузера или из веб-ссылки. Если пользователь решит импортировать его со своего компьютера с помощью диалогового окна файла, предварительный просмотр будет автоматически загружен после выбора файла изображения. Если пользователь случайно заполняет диалоговое окно и URL-адреса, и файла, я хочу очистить TextBox от URL-адреса (называемый url_cover), TextBox, отображающий имя файла, импортированного в диалоговое окно файла (называемое 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 ()). Я попытался изменить порядок, в котором должны были быть выполнены три инструкции, но каждый раз, когда это было одинаково, после второй инструкции ожидался конец оператора ... Надеюсь, мои объяснения были ясны, и мой вопрос заключается в том, как я могу выполнить более 2 инструкций после выполнения условия моего оператора If.

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Если вы хотите, чтобы при выполнении условия выполнялось более одного оператора, вам нужно заключить его в блок, заканчивающийся 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
0 голосов
/ 26 марта 2019

Попробуйте ... Вы можете использовать : для разделения операторов, если вы хотите, чтобы они были в одной строке.

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 , Несколько операторов в одной строке и оператор AndAlso .Также старайтесь избегать :, если операторы могут стать длинными, неясными для чтения и т. Д., Но нет ничего плохого в их использовании.

Пожалуйста, рассмотрите возможность добавления комментария, если вы считаете, что этот пост может быть улучшен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...