2013-12-12 5 views
10

मैं तो "txtMyTextValue" नामक एक पाठ बॉक्स और नाम "btnSave" फ़ॉर्म सहेजें और बंद जब क्लिक करते ही करने के लिए एक बटन के साथ एक "frmOptions" फ़ॉर्म,VB.NET में एक संवाद फ़ॉर्म से मूल्य कैसे प्राप्त करें?

है, मैं इस संवाद रूप दिखा रहा हूँ "frmOptions" जब एक बटन "btnOptions" इस

Private Sub btnOptions_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOptions.Click 
    ShowOptionsForm() 
End Sub 

Private Sub ShowOptionsForm() 
    Dim options = New frmOptions 
    options.ShowDialog() 
End Sub 

की तरह, मुख्य रूप "frmMain" पर क्लिक किया जाता है मैं मुख्य रूप "frmMain" मूल्य पाठ बॉक्स "txtMyTextValue" में डाला में कैसे प्राप्त कर सकता है जब "btnSave" है क्लिक किया?

उत्तर

18

केवल तभी परिणाम OK है आप संवाद से जानकारी कैप्चर करना चाहते हैं (उपयोगकर्ता Save बजाय Cancel की प्रेस या संवाद किसी अन्य तरह से बंद कर देता है), तो यह कार्य करें:

Private Sub ShowOptionsForm() 
    Dim options = New frmOptions 

    ' Did the user click Save? 
    If options.ShowDialog() = Windows.Forms.DialogResult.OK Then 
     ' Yes, so grab the values you want from the dialog here 
     Dim textBoxValue As String = options.txtMyTextValue.Text 
    End If 
End Sub 

अब के अंदर अपने

Public Class frmOptions 
    Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click 
     ' Set the result to pass back to the form that called this dialog 
     Me.DialogResult = Windows.Forms.DialogResult.OK 
    End Sub 
End Class 
+1

आपके स्मार्ट और संक्षिप्त उत्तर के लिए धन्यवाद। – Max

+0

@ मैक्स - कोई समस्या नहीं, खुशी है कि यह आपकी मदद करता है। आप सौभाग्यशाली हों। :-) –

+0

महान समाधान! – SamekaTV

2

भोला आदमी: संवाद रूप है, आप जब उपयोगकर्ता बटन कि संवाद फार्म के OK कार्रवाई से मेल खाती है क्लिक करता है, इस तरह परिणाम Windows.Forms.DialogResult.OK निर्धारित करने की आवश्यकता आप के मान की प्रतिलिपि ऐसा न हो कि विधि जब अपने उपयोगकर्ता ठीक बटन पर क्लिक करता है frmOptions रूप है कि एक आंतरिक स्ट्रिंग frmOptions की वैश्विक स्तर पर घोषित रिटर्न

Dim strValue As String 
Public Property MyStringValue() As String 
    Get 
     Return strValue 
    End Get 
End Property 

फिर, करने के लिए एक सार्वजनिक संपत्ति को जोड़ने के लिए अपने विकल्पों को पुष्टि के लिए है आंतरिक चर

Private Sub cmdOK_Click(sender As Object, e As System.EventArgs) Handles cmdOK.Click 
    strValue = txtMyTextValue.Text 
End Sub 
अंत में frmMain में

आप इस तरह कोड का उपयोग करने पाठ बॉक्स डाला मूल्य

Private Sub ShowOptionsForm() 
    Using options = New frmOptions() 
     if DialogResult.OK = options.ShowDialog() Then 
      Dim value = options.MyStringValue 
     End If 
    End Using 
End Sub 

मैं avo करने के लिए पसंद करते हैं पुनः प्राप्त करने के आईडी frmOptions के आंतरिक नियंत्रणों तक सीधे पहुंच, एक संपत्ति एक संकेत प्रदान करती है जिसका उपयोग आपके उपयोगकर्ता द्वारा दिए गए इनपुट को बेहतर तरीके से सत्यापित करने के लिए किया जा सकता है।

3

आप इसकी देखभाल करने के लिए घटनाओं का उपयोग कर सकते हैं। इस दृष्टिकोण के साथ सेटिंग्स प्रपत्र को मॉडल नहीं होना चाहिए और उपयोगकर्ता किसी भी समय सहेजें बटन पर क्लिक कर सकता है।

में frmOptions:

'You can expand the signature to take more than just a single String. 
Friend Event SavedOptions(ByVal strData As String) 

Private Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click 

    RaiseEvent SavedOptions(txtMyTextValue.Text) 

End Sub 

frmMain में:

Private Sub ShowOptionsForm() 

    Dim options = New frmOptions 

    AddHandler options.SavedOptions, AddressOf OnOptionsSave 

    options.ShowDialog() 

End Sub 

Private Sub OnOptionsSave(ByVal strData As String) 

    'Or whatever you want to do on frmMain with Options Data. 
    MsgBox(strData) 

End Sub 
0

आप frmOptions उदाहरण से मूल्य तक पहुँच सकते हैं। हालांकि, यह डेमेटर के कानून को तोड़ देता है।

आपको अपनी कक्षा के भीतर किसी संपत्ति के साथ मूल्य का खुलासा करना चाहिए। सार्वजनिक कक्षा frmOptions

Public ReadOnly Property MyTextValue As String 
    Get 
     Return Me.txtMyTextValue.Text 

    End Get 
End Property 

समाप्ति कक्षा

तो फिर तुम मूल्य का उपयोग कर सकते: अंत में

Private Sub ShowOptionsForm() 
     Dim options = New frmOptions 
     Dim frmOptionTextValue As String 
     Dim frmOptionsDiagResult As DialogResult 
     frmOptionsDiagResult = options.ShowDialog() 
     If frmOptionsDiagResult = Windows.Forms.DialogResult.OK Then 
      frmOptionTextValue = options.MyTextValue 
     Else 
      '... 
     End If 
    End Sub 

, यदि आप एक संवाद का उपयोग कर रहे तो संवाद बटन के लिए परिणाम तैयार करना न भूलें ।

संबंधित मुद्दे