Создаю в MS Visual Studio проект Basic Windows Forms. В папке появляется два файла Form1.vb и Form1.Designer.vb и открывается конструктор форм.
Теперь добавляю вторую форму.
И хочу из одной формы вызвать другую. Когда я пишу Form2.Show() ' появляется такая ошибка: Ссылка на член, не являющийся общим, должна быть ссылкой на объект.
Слышал, что если написать InitializeComponent() ' всё сработает, но нет, выходит, что "InitializeComponent" не объявлен. Может быть недоступен из-за своего уровня защиты
Если создаю формы вручную в этом же файле и без конструктора, то вроде бы работает.
Так же, я в Интернете находил похожие примеры кода, запускал и они работают. Тогда почему не работает то, что я написал в своём проекте?
Может какие ссылки в проект не добавлены или что с настройками?
Вот, к примеру,. Можете ли вы посмотреть этот архив
Project1test111.zip и сказать, где ошибка и как надо правильно?
Спрашивал на других форумах, но мне так ничего не подсказали.
Main.vbPublic Class MainClass
Private _IsChild As Boolean
Public Shared sLogin As String, sPassword As String
Public Sub New()
MyClass.New(False)
End Sub
Public Sub New(isChild As Boolean)
' This call is required by the designer.
InitializeComponent() ' "InitializeComponent" не объявлен. Может быть недоступен из-за своего уровня защиты.
' Add any initialization after the InitializeComponent() call.
_IsChild = isChild
End Sub
Shared Sub Main()
LoginForm1.Show() ' Ссылка на член, не являющийся общим, должна быть ссылкой на объект.
MsgBox(sLogin & " : " & sPassword)
End Sub
End Class
LoginForm1.vbPublic Class LoginForm1
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
MainClass.sLogin = UsernameTextBox.Text
MainClass.sPassword = PasswordTextBox.Text
Me.Close()
End Sub
Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
Me.Close()
End Sub
End Class
LoginForm1.Designer.vb<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
<Global.System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1726")> _
Partial Class LoginForm1
Inherits System.Windows.Forms.Form
'Форма переопределяет dispose для очистки списка компонентов.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
Friend WithEvents LogoPictureBox As System.Windows.Forms.PictureBox
Friend WithEvents UsernameLabel As System.Windows.Forms.Label
Friend WithEvents PasswordLabel As System.Windows.Forms.Label
Friend WithEvents UsernameTextBox As System.Windows.Forms.TextBox
Friend WithEvents PasswordTextBox As System.Windows.Forms.TextBox
Friend WithEvents OK As System.Windows.Forms.Button
Friend WithEvents Cancel As System.Windows.Forms.Button
'Является обязательной для конструктора форм Windows Forms
Private components As System.ComponentModel.IContainer
'Примечание: следующая процедура является обязательной для конструктора форм Windows Forms
'Для ее изменения используйте конструктор форм Windows Form.
'Не изменяйте ее в редакторе исходного кода.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(LoginForm1))
Me.LogoPictureBox = New System.Windows.Forms.PictureBox()
Me.UsernameLabel = New System.Windows.Forms.Label()
Me.PasswordLabel = New System.Windows.Forms.Label()
Me.UsernameTextBox = New System.Windows.Forms.TextBox()
Me.PasswordTextBox = New System.Windows.Forms.TextBox()
Me.OK = New System.Windows.Forms.Button()
Me.Cancel = New System.Windows.Forms.Button()
CType(Me.LogoPictureBox, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'LogoPictureBox
'
Me.LogoPictureBox.Image = CType(resources.GetObject("LogoPictureBox.Image"), System.Drawing.Image)
Me.LogoPictureBox.Location = New System.Drawing.Point(0, 0)
Me.LogoPictureBox.Name = "LogoPictureBox"
Me.LogoPictureBox.Size = New System.Drawing.Size(165, 193)
Me.LogoPictureBox.TabIndex = 0
Me.LogoPictureBox.TabStop = False
'
'UsernameLabel
'
Me.UsernameLabel.Location = New System.Drawing.Point(172, 24)
Me.UsernameLabel.Name = "UsernameLabel"
Me.UsernameLabel.Size = New System.Drawing.Size(220, 23)
Me.UsernameLabel.TabIndex = 0
Me.UsernameLabel.Text = "&Имя пользователя"
Me.UsernameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
'
'PasswordLabel
'
Me.PasswordLabel.Location = New System.Drawing.Point(172, 81)
Me.PasswordLabel.Name = "PasswordLabel"
Me.PasswordLabel.Size = New System.Drawing.Size(220, 23)
Me.PasswordLabel.TabIndex = 2
Me.PasswordLabel.Text = "&Пароль"
Me.PasswordLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
'
'UsernameTextBox
'
Me.UsernameTextBox.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest
Me.UsernameTextBox.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.HistoryList
Me.UsernameTextBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper
Me.UsernameTextBox.Location = New System.Drawing.Point(174, 44)
Me.UsernameTextBox.MaxLength = 70
Me.UsernameTextBox.Name = "UsernameTextBox"
Me.UsernameTextBox.Size = New System.Drawing.Size(220, 22)
Me.UsernameTextBox.TabIndex = 1
'
'PasswordTextBox
'
Me.PasswordTextBox.Location = New System.Drawing.Point(174, 101)
Me.PasswordTextBox.Name = "PasswordTextBox"
Me.PasswordTextBox.PasswordChar = Global.Microsoft.VisualBasic.ChrW(42)
Me.PasswordTextBox.Size = New System.Drawing.Size(220, 22)
Me.PasswordTextBox.TabIndex = 3
'
'OK
'
Me.OK.Location = New System.Drawing.Point(197, 161)
Me.OK.Name = "OK"
Me.OK.Size = New System.Drawing.Size(94, 23)
Me.OK.TabIndex = 4
Me.OK.Text = "&ОК"
'
'Cancel
'
Me.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Cancel.Location = New System.Drawing.Point(300, 161)
Me.Cancel.Name = "Cancel"
Me.Cancel.Size = New System.Drawing.Size(94, 23)
Me.Cancel.TabIndex = 5
Me.Cancel.Text = "&Отмена"
'
'LoginForm1
'
Me.AcceptButton = Me.OK
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.CancelButton = Me.Cancel
Me.ClientSize = New System.Drawing.Size(401, 192)
Me.Controls.Add(Me.Cancel)
Me.Controls.Add(Me.OK)
Me.Controls.Add(Me.PasswordTextBox)
Me.Controls.Add(Me.UsernameTextBox)
Me.Controls.Add(Me.PasswordLabel)
Me.Controls.Add(Me.UsernameLabel)
Me.Controls.Add(Me.LogoPictureBox)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "LoginForm1"
Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
Me.Text = "LoginForm1"
CType(Me.LogoPictureBox, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
End Class
Как сделать, чтобы именно этот пример заработал?