Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GetSerialPortNames()
End Sub
Sub GetSerialPortNames()
' Показать все возможные COM порты
For Each sp As String In My.Computer.Ports.SerialPortNames
ListBox1.Items.Add(sp)
Next
End Sub
Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
'Выбор строки DblClick. Закрытие формы. Возвращение в вызывающую форму выбраного значения
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
'Выбор строки с подтверждением ОК
Dim curItem As String = ListBox1.SelectedItem.ToString()
End Sub
Private Sub Ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ok.Click
'Подтверждение выбраной строки. Закрытие формы. Возвращение в вызывающую форму выбраного значения
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
Возращение значения из списка в вызывающую форму
Установил Visual Studio 2008 и VB 2008, теперь пытаюсь изучить данный язык.
Просьба к знатокам помочь в данном вопросе.
Теперь конкретно что сделано:
Имеется Form1 с Button1, при нажатии которой появляется Form2
Код:
Подскажите как можно присвоить значению PortIO из первой формы, значение выбраное из списка.
В Модуле объявить переменную например
[COLOR="blue"]Module[/COLOR] MyModule
[COLOR="blue"]Public[/COLOR] curItem [COLOR="blue"]As[/COLOR] [COLOR="#556b2f"]String[/COLOR]
[COLOR="blue"]End Module[/COLOR] теперь переменная видна в двух формах.
Или другой вариант из Form1 обратиться Form2
В коде Form1 пишите так
[COLOR="blue"]Private Sub[/COLOR] Ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ok.Click
Form2.ListBox1.т.д
или
Dim a
a = Form2.ListBox1.т.д
[COLOR="blue"]End Sub[/COLOR]
Код:
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GetSerialPortNames()
End Sub
Sub GetSerialPortNames()
' Показать все возможные COM порты
For Each sp As String In My.Computer.Ports.SerialPortNames
ListBox1.Items.Add(sp)
Next
If PortIO <> "" Then
[COLOR="#ff0000"]'Хотелось бы установить указатель на ранее выбраную строку[/COLOR]
End If
End Sub
Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
'Выбор строки DblClick. Закрытие формы. Возвращение в вызывающую форму выбраного значения
PortIO = ListBox1.SelectedItem.ToString()
Me.Close()
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
'Выбор строки с подтверждением ОК
End Sub
Private Sub Ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ok.Click
'Подтверждение выбраной строки. Закрытие формы. Возвращение в вызывающую форму выбраного значения
PortIO = ListBox1.SelectedItem.ToString()
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
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GetSerialPortNames()
End Sub
Sub GetSerialPortNames()
' Показать все возможные COM порты
For Each sp As String In My.Computer.Ports.SerialPortNames
ListBox1.Items.Add(sp)
Next
If PortIO <> "" Then
[COLOR="#ff0000"]'Хотелось бы установить указатель на ранее выбраную строку[/COLOR]
End If
End Sub
Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
'Выбор строки DblClick. Закрытие формы. Возвращение в вызывающую форму выбраного значения
PortIO = ListBox1.SelectedItem.ToString()
Me.Close()
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
'Выбор строки с подтверждением ОК
End Sub
Private Sub Ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ok.Click
'Подтверждение выбраной строки. Закрытие формы. Возвращение в вызывающую форму выбраного значения
PortIO = ListBox1.SelectedItem.ToString()
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
Там где выделено красным ни могу ни чего придумать.
У меня только СОМ1 см. рис.
Цитата:
Там где выделено красным ни могу ни чего придумать.'Хотелось бы установить указатель на ранее выбраную строку
Может так
[COLOR="blue"]Private Sub[/COLOR] ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
'Выбор строки с подтверждением ОК
PortIO = ListBox1.SelectedItem.ToString()
memSelectedIndex = ListBox1.SelectedIndex
[COLOR="blue"]End Sub[/COLOR]
а это выражение при вызове Form2
ListBox1.SelectedIndex = memSelectedIndex
p.s Коней добавил для Эксперимента и все работает
Главное всё просто. Но не зная азов не додумаешься. На несколько раз проходился по всем этим выражения, которые после точки стоят, но так и не сообразил какое из них можно использовать.
Ну и memSelectedIndex я так понял тоже надо определить Глобальной переменой в модуле.
[COLOR="#006400"]Form1 содержит Button1 и Label1[/COLOR]
[COLOR="blue"]Public Class[/COLOR] [COLOR="red"]Form1[/COLOR]
Private Sub [COLOR="#ff00ff"]Button1[/COLOR]_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form2.FindSerialPort(Form2)
[COLOR="#ff00ff"]Label1[/COLOR].Text = Nothing
PortIO = Nothing
Form2.ListBox1.SelectedIndex = memSelectedIndex
End Sub
[COLOR="blue"]End Class[/COLOR]
[COLOR="blue"]Public Class[/COLOR] [COLOR="red"]Form2[/COLOR]
Dim frmClient As Form
Public Sub FindSerialPort(ByRef Tb As Form)
frmClient = Tb
Me.Visible = False
Me.Show(frmClient.Parent)
End Sub
Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Показать все возможные COM порты
For Each sp As String In My.Computer.Ports.SerialPortNames
ListBox1.Items.Add(sp)
Next
End Sub
Private Sub [COLOR="#ff00ff"]cmdCancel[/COLOR]_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCancel.Click
'Закрытие формы. Ни чего не возвращаем
Me.Close()
End Sub
Private Sub [COLOR="#ff00ff"]cmdOk[/COLOR]_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOk.Click
'Подтверждение выбраной строки. Закрытие формы. Возвращение в вызывающую форму выбраного значения
Form1.Label1.Text = PortIO
Me.Close()
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
'Выбор строки с подтверждением ОК
PortIO = ListBox1.SelectedItem.ToString()
memSelectedIndex = ListBox1.SelectedIndex
End Sub
[COLOR="blue"]End Class[/COLOR]
[COLOR="blue"]Module[/COLOR] [COLOR="red"]Module1[/COLOR]
Public PortIO As String
Public memSelectedIndex As Integer
[COLOR="blue"]End Module[/COLOR]