2015-06-23 2 views
0

У меня возникла серьезная проблема с поисковым окном, пожалуйста, помогите решить эту проблему.как вернуться (вернуться) к форме со значением

см шаги моей формы открывает

  1. открывают первую форму (от Dashboard)

    Dim ObjOrder As New OrderFormFrm 
    ObjOrder.USER = USER 
    ObjOrder.Show() 
    
  2. Далее я должен открыть popwindow, основанный на событии текстового поля.

    Private Sub txtCustCode_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles txtCustCode.MouseClick 
    
        Dim PopUpCustomer As New searchCustomerfrm 
        PopUpCustomer.ShowDialog() 
    End Sub 
    
  3. Я должен GoBack к БЛАНК ЗАКАЗА со значением на основе GridView строки события нажатия

    Private Sub DGVCustomer_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGVCustomer.CellContentDoubleClick 
    
        OrderFormFrm.txtCustCode.Text = Val(DGVCustomer.Item(1, e.RowIndex).Value)` 
    
        Me.Close() 
    
    End Sub 
    

Проблемы есть, я получаю значение текстового поля БЛАНК ЗАКАЗА, когда я начинаю форму проекта от 'OrderFormFrm' (настройка свойств проекта - начало), а не получение, если я начал проект с панели инструментов.

Мне нужно, чтобы отобразить значение 'DGVCustomer.Item(1, e.RowIndex).Value' в формах заказа текстового поля 'txtCustCode'

Пожалуйста, помогите решить эту проблему

ответ

1

вы могли бы сделать общую функцию на searchCustomerfrm формы, которая возвращает значение, которое вы ожидаете от формы :

Public Shared Function GetCustomer() 
     Dim PopUpCustomer As New searchCustomerfrm 
     If PopUpCustomer.ShowDialog() = DialogResult.OK Then 
      Return Val(PopUpCustomer.DGVCustomer.Item(1, PopUpCustomer.DGVCustomer.CurrentRow.Index).Value) 
     Else 
      Return Nothing 
     End If 
End Function 

на DGVCustomer_CellContentDoubleClick пишут это:

Private Sub DGVCustomer_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGVCustomer.CellContentDoubleClick 

    Me.DialogResult = DialogResult.OK 

End Sub 

Для вызова searchCustomerfrm из OrderFormFrm вы будете иметь этот код:

txtCustCode.Text = searchCustomerfrm.GetCustomer

+0

Спасибо, я попытался это, но получаю сообщение об ошибке. Как получить rowIndex в этой функции GetCustomer? e не объявлено –

+0

Ошибка 1: 'e' не объявляется. Он может быть недоступен из-за его уровня защиты. Ошибка 2: не может ссылаться на экземпляр-член класса из совместно используемого метода или инициатора разделяемого члена без явного экземпляра класса. –

+0

Извините, я пропустил несколько вещей о возвращаемом значении, я изменил код, который должен работать нормально! – ozat

0

Если я не пропустил что-то, что вам нужно называть исходную форму по имени экземпляра, а не по типу ...

Private Sub DGVCustomer_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGVCustomer.CellContentDoubleClick 

    ObjOrder.txtCustCode.Text = Val(DGVCustomer.Item(1, e.RowIndex).Value) 

Me.Close() 

End Sub 
+0

, но проблема еще не решена, как функция getCustomer возвращает этот -Val (DGVCustomer.Item (1, e.RowIndex) .Value) ? –

+0

Вы не показали нам функцию getCutomer. – DiscipleMichael

+0

Извините, в соответствии с первым предложенным ответом я получил getCutomer. –

0

добавить общественное свойство sendingForm к классу searchCustomerFrm

Public Class searchCustomerFrm 
Public sendingForm As OrderFormFrm 

Затем установить это свойство представляемой форму при создании новой формы

Private Sub txtCustCode_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles txtCustCode.MouseClick 

    Dim PopUpCustomer As New searchCustomerfrm 
    PopUpCustomer.sendingForm = Me 
    PopUpCustomer.ShowDialog() 
End Sub 

Наконец, установить текстовое поле свойства отправки формы

Private Sub DGVCustomer_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGVCustomer.CellContentDoubleClick 


     sendingForm.txtCustCode.Text = Val(dgvCustomer.Item(1, e.RowIndex).Value) 

     Me.Close() 

End Sub 
+0

Пока это работает для вас, я бы посмотрел на использование частной собственности для отправляющей формы. Я просто хотел, чтобы вы попробовали это первым. – DiscipleMichael

Смежные вопросы