В вашей форме отображения добавьте этот код
Public Sub SetFilter(name as String)
' Set the filter here
End Sub
В вашей форме фильтра сделайте это
DirectCast(Application.OpenForms(0), DisplayForm).SetFilter(NameTextBox.Text)
Здесь я предполагаю, что DisplayForm является вашей основной формой и что ее имя DisplayForm
.Вы могли бы вызвать это, например, при помощи события нажатия кнопки.
РЕДАКТИРОВАТЬ в ответ на комментарий:
Вы сказали, что знаете, как это сделать.на одной форме.Я не знаю, как вы это делаете, но, вероятно, у вас есть текстовые поля для имени, адреса и т. Д., Которые вы ищете.Затем, вероятно, вы нажимаете кнопку с именем btnSearch
.Нажав эту кнопку, вы активируете
Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch_Click.Click
' The search logic goes here
End Sub
. Я говорю вам о том, чтобы заменить btnSearch_Click
на Public Sub SetFilter(name as String)
, который является открытым.Вы бы переместили эти поля поиска и кнопку во вторую форму и оттуда позвоните SetFilter
из первой формы, чтобы связаться с ней и сказать ей, чтобы искать клиента.В моем примере я передаю только имя, но я оставил вам право передавать больше параметров по мере необходимости.
Предполагая, что ваша форма клиента называется "DisplayForm", вы можете получить к ней доступ, например:
Dim cust As DisplayForm
cust = DirectCast(Application.OpenForms("DisplayForm"), DisplayForm)
cust.SetFilter(NameTextBox.Text)
Мой ответ был только о связи между двумя формами, предполагая, что вы уже управляли другой частью.
Поиск " Учебное пособие по VB.NET: Работа с данными "на YouTube приводит шесть видеороликов на эту тему.Видео № 3, в частности, показывает, как использовать фильтры.
EDIT # 2 .Вот еще немного помощи:
Я не знаю, как вы открываете две формы.Так как вам нужна ссылка на форму отображения в форме поиска, проще открыть форму поиска в качестве основной формы при запуске приложения.На Form_Load в форме поиска вы затем открываете форму отображения с помощью кода
Код в форме поиска :
' Reference to the display form
Private _displayForm As DisplayForm
' Create the display form and open it
Private Sub SearchForm_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
_displayForm = New DisplayForm()
_displayForm.Show()
End Sub
' Get the search parameters and tell the display form to set the filter
Private Sub btnSearch_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSearch.Click
Dim field As String, search As Object
Select Case cboField.SelectedIndex
Case 0
field = "surname"
search = txtSearch.Text
Case 1
Dim n As Integer
field = "id"
If Integer.TryParse(txtSearch.Text, n) Then
search = n
Else
MessageBox.Show("Please enter a number for id search", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)
Return
End IF
End Select
_displayForm.SetFilter(field, search)
End Sub
Код в форме отображения , который фактически выполняет сортировку и поиск:
Public Sub SetFilter(ByVal field As String, ByVal search As Object)
Dim intPosition As Integer
ObjDataView.Sort = field
intPosition = ObjDataView.Find(search)
If intPosition = -1 Then
MessageBox.Show("No customer found", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)
Else
objCurrencyManager.Position = intPosition
End If
End Sub