#vb.net #.net-5
#vb.net #.net-5
Вопрос:
Проблема
Я пытаюсь отладить форму заявки с помощью кнопок. Обычно, когда мы дважды щелкаем по кнопке, появляется исходное окно с событием щелчка для этой кнопки. Однако в последней версии .NET 5.0 есть много вещей, которые не работают должным образом.
Ниже приведены многочисленные проблемы, с которыми я сталкиваюсь, которых обычно нет, и в блоге Microsoft или MSDN нет объяснений по этим проблемам:
- Когда я добавляю исходный код к любому событию button_click, после сборки и отладки ничего не происходит! Я пытался заставить его работать, но без усилий.
- После переименования элементов управления в форме проекту требуется полная перестройка, чтобы изменить имена элементов управления в файле Designer.vb. Раньше это было автоматически в VB до .NET 5.0
- Приложение.Designer.vb randonly решает использовать значение по умолчанию
Me.MainForm = Global.<ProjectNameHere>.<FormNameHere>
дляMe.MainForm = Global.<ProjectNameHere>.Form1
и затем выдает ошибку, что Form1 не найден. Зачем, черт возьми, эта дополнительная работа? VB используется для автоматической настройки.
Код: события нажатия кнопки
Public Class MainWindow
Private Sub Btn_Exit_Click(sender As Object, e As EventArgs)
Application.Exit()
End Sub
Private Sub Btn_MaxMin_Click(sender As Object, e As EventArgs)
If WindowState = FormWindowState.Normal Then
WindowState = FormWindowState.Maximized
Else
WindowState = FormWindowState.Normal
End If
End Sub
Private Sub Btn_Minimize_Click(sender As Object, e As EventArgs)
WindowState = FormWindowState.Minimized
End Sub
End Class
Я пробовал отладку, и события нажатия не отвечают. Я попытался перестроить решение, и оно не работает. Я попытался добавить Refresh() после каждой строки кода и не работает. Я перепроверил designer.vb и все остальное, и это не работает.
.NET 5.0 не работает при использовании Visual Basic WinForms. Код intellisense стал медленным. Все работает медленно и не работает.
Информация о системе
Версия продукта: Microsoft Visual Studio Community 2019 16.8.0
Платформа DotNET: 5.0 (выпущена 11 ноября 2020 года)
Операционная система: Windows 10 20H2
Пожалуйста, помогите мне исправить эти проблемы. Код не предоставлен, потому что я не знаю, как другие разработчики будут воспроизводить эти проблемы. Я не могу найти никаких подобных проблем в SO или где-либо еще. Я не могу найти никаких проблем при использовании .NET 4.8 или других версий .NET, отличных от 5.0, с WinForms и VB.
Комментарии:
1. Вам нужно задать только один вопрос в каждом потоке. SO разработан таким образом, чтобы вы могли принять ответ в качестве решения вашего вопроса. Никому не нужно отвечать на несколько вопросов, чтобы дать полный ответ. Пожалуйста, совершите экскурсию по сайту, которую вы должны были сделать при появлении запроса, и проведите некоторое время в Справочном центре, чтобы узнать, как работает сайт.
2. Весьма вероятно, что в .NET 5.0 и поддерживающих технологиях будут ранние ошибки. Некоторые из них могут быть широко распространены, а некоторые могут повлиять на вас, но не на других, и, возможно, могут быть исправлены с помощью исправления VS. Вы также должны ожидать, что поддержка VB будет гораздо более низким приоритетом для Microsoft, чем C #. Поддержка WinForms в .NET Core также является довольно новой для любого языка. Честно говоря, я бы, вероятно, еще некоторое время держался подальше от .NET 5.0 для приложений VB WinForms.
3. Отвечая на ваш первый вопрос, который является единственным, который следует задать здесь, я не уверен, почему это произошло, но в ваших методах нет
Handles
предложений, поэтому они не обрабатывают какие-либо события. Создайте аналогичную форму и аналогичный обработчик событий в .NET Framework 4.8 и посмотрите на разницу.4. К вашему сведению, я только что создал новое приложение .NET 5 VB WiinForms, добавил
Button
и создал обработчикClick
событий. Он работал, как ожидалось, включаяHandles
предложение. Обратите внимание, что если бы вы вырезали (не копировали) и вставляли свои элементы управления, это удалилоHandles
бы предложения. Если они просто не были добавлены в первую очередь, значит, с вашей IDE что-то не так, что не влияет на мою, поэтому я бы предложил исправить.5. @jmcilhinney Вы правы. Что-то не так с моей IDE. Я удалил .NET 5 и восстановил IDE. Кажется, что когда мы дважды нажимаем кнопку в designer, предложение handles не было автоматически включено в код (который, как разработчик vb, я привык автоматически использовать в среде IDE с использованием соответствующих предложений и атрибутов). Однако, как я заметил, другие проблемы все еще остаются, и теперь я уверен, что VB не получил внимания в этом обновлении фреймворка. Многие вещи, которые были довольно автоматическими и простыми в выполнении в VB, требуют, чтобы я обрабатывал их как проект на C #.
Ответ №1:
Просматривая код обработчика события нажатия кнопки, я вижу, что его нет Handles Button1.Click
.
Для запуска кода он должен быть связан с событием, выполнив:
Private Sub Btn_Exit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Application.Exit()
End Sub
Другой вариант:
Private Sub Form1_Load(sender as Object, e as EventArgs) Handles Me.Load
AddHandler btnExit.Click, AddressOf Btn_Exit_Click 'run this somewhere when the form loads
End Sub
Private Sub Btn_Exit_Click(sender As Object, e As EventArgs)
Application.Exit()
End Sub
Если это полезно, отлично. Если нет, предоставьте больше своего кода, чтобы мы могли видеть, что все происходит.
С уважением