<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>WinForms</title><link>https://www.dotnetzone.gr:443/cs/forums/12/ShowForum.aspx</link><description>Θέματα για rich client / windows εφαρμογές, σε οποιαδήποτε γλώσσα (VB.NET, C#, managed C++, κ.α.)</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Πρόβλημα με πέρασμα τιμών από μία MDIChild σε άλλη MDIChild Form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/29784.aspx</link><pubDate>Tue, 17 Apr 2007 19:19:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:29784</guid><dc:creator>giocha</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/29784.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=29784</wfw:commentRss><description>Σ' ευχαριστώ.&lt;br&gt;&lt;br&gt;Δήλωσα μια Public μεταβλητή σε ένα module για την φόρμα που ανοίγω και μετά την καλώ από την MDIParent form.&lt;br&gt;&lt;br&gt;&lt;font color="#ff1493"&gt;Public NewCSChild As New frmCS()&lt;/font&gt;&lt;br&gt;&lt;br&gt;Και λύθηκε το πρόβλημα.&lt;br&gt;</description></item><item><title>Απ: Πρόβλημα με πέρασμα τιμών από μία MDIChild σε άλλη MDIChild Form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/29664.aspx</link><pubDate>Tue, 17 Apr 2007 00:09:04 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:29664</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/29664.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=29664</wfw:commentRss><description>Υποψιάζομαι ότι δεν έχεις ορίσει πουθενά ένα instance της frmCS (Dim myForm as New frmCS) αλλά χρησιμοποιείς απευθείας την κλάση frmCS (π.χ. κάπου γράφεις frmCS.Show). Κανονικά, για να χρησιμοποιήσεις μία κλάση πρέπει να δημιουργήσεις ένα instance με την New. Ένα από τα πιο αμφιλεγόμενα χαρακτηριστικά της VB6 ήταν ότι μπορούσες να αναφερθείς στην κλάση μίας φόρμα απευθείας και να τη χρησιμοποιήσεις. Το runtime από πίσω δημιουργούσε ένα instance και σου το επέστρεφε. Αυτό το "feature" μπορεί να σε γλυτώνει από 1 επιπλέον γραμμή κώδικα για το Dim As New, αλλά δημιουργεί πάρα πολλά προβλήματα. Ένα από αυτά είναι ότι δεν ξέρεις ποτέ αν αναφέρεσαι στην κλάση frmCS ή στο default instance. Γι αυτό το λόγο και θεωρείται κακή πρακτική να το χρησιμοποιείς όχι μόνο στην VB6 αλλά και στην VB.NET.&lt;br&gt;&lt;br&gt;Στην περίπτωση σου, ο μόνος τρόπος να κάνει compile ο κώδικας που δίνεις είναι να έχεις χρησιμοποιήσει την frmCS με αυτό τον τρόπο. &lt;br&gt;Εδώ όμως έρχεται το πρόβλημα, σε ποιό instance αναφέρεσαι? Αν έχεις δημιουργήσει κάπου μία frmCS ως MdiChild, με Dim myForm As New frmCS έχεις ένα instance της φόρμας, το οποίο λέγεται myForm. Στην δεύτερη φόρμα όμως δεν αναφέρεσαι σε αυτό. Αναφέρεσαι στο άσχετο default instance το οποίο λέγεται frmCS. Ουσιαστικά, όταν καλείς την frmCS.txtCsType.Text, δημιουργείται μία ΝΕΑ φόρμα, η οποία ΔΕΝ ΕΙΝΑΙ child ΚΑΝΕΝΟΣ!&lt;br&gt;&lt;br&gt;Για να μπορέσεις να αναφερθείς σωστά από μία φόρμα στην άλλη θα πρέπει κάπως να περάσεις ένα reference της μίας στην άλλη. Μπορείς π.χ. να φτιάξεις ένα constructor στην δεύτερη φόρμα ο οποίος θα δέχεται ως παράμετρο την myForm και θα αποθηκεύει την παράμετρο σε ένα πεδίο. Έτσι όμως θα πρέπει η μία φόρμα να ξέρει τα εσώψυχα της άλλης (ένα πρόβλημα το οποίο έχεις ήδη). Τί την νοιάζει την δεύτερη φόρμα αν έχει η πρώτη ένα πεδίο txtCsType?&lt;br&gt;&lt;br&gt;Καλύτερη λύση είναι η κάθε φόρμα να καλεί ένα function στην parent, ή να σηκώνει ένα event το οποίο θα χειρίζεται η parent. Αυτή μετά θα καλεί ένα function στην άλλη φόρμα το οποίο θα θέτει τις τιμές στα κατάλληλα πεδία.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>Πρόβλημα με πέρασμα τιμών από μία MDIChild σε άλλη MDIChild Form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/29652.aspx</link><pubDate>Mon, 16 Apr 2007 23:44:21 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:29652</guid><dc:creator>giocha</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/29652.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=29652</wfw:commentRss><description>Έχω δύο MDIChild forms. &lt;br&gt;&lt;br&gt;Ενώ έχω ήδη ανοιχτή μία MDIChild form με όνομα frmCS ανοίγω μία άλλη πάλι MDIChild form που περιέχει ένα DataGridView, πατώντας F7.&lt;br&gt;&lt;br&gt;&lt;font color="#ff1493"&gt;'========================&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub txtCsType_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtCsType.KeyDown&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If e.KeyCode = Keys.F7 Then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim NewCSViewChild As New frmCustomersSuppliersView()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NewCSViewChild.MdiParent = Me.MdiParent&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NewCSViewChild.Show()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br&gt;'========================
&lt;/font&gt;&lt;br&gt;
&lt;br&gt;&lt;br&gt;Τώρα όταν είμαι στην &lt;font color="#ff1493"&gt;NewCSViewChild &lt;font color="#000000"&gt;φόρμα, πατώντας ENTER πάνω σε μία γραμμή του DataGridView (&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff1493"&gt;dgvCustomersSuppliersTypesView&lt;/font&gt;&lt;font color="#ff1493"&gt;&lt;font color="#000000"&gt;) στέλνω την τιμή της πρώτης στήλης της τρέχουσας γραμμής στο πεδίο &lt;font color="#ff1493"&gt;txtCsType&lt;/font&gt;, το οποίο είναι TextBox, στην φόρμα &lt;font color="#ff1493"&gt;frmCS&lt;/font&gt;.&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff1493"&gt;&lt;br&gt;'========================&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub dgvCustomersSuppliersTypesView_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgvCustomersSuppliersTypesView.KeyDown&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If e.KeyCode = Keys.Escape Then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.Close()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If e.KeyCode = Keys.Enter Then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; frmCS.txtCsType.Text = dgvCustomersSuppliersTypesView.Item(0, dgvCustomersSuppliersTypesView.CurrentCell.RowIndex).Value&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.Close()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br&gt;&lt;/font&gt;&lt;font color="#ff1493"&gt;'========================&lt;br&gt;
&lt;/font&gt;&lt;br&gt;&lt;font color="#ff1493"&gt;&lt;font color="#000000"&gt;Το θέμα είναι ότι όταν οι φόρμες δεν είναι MDIChild όλα λειτουργούν κανονικά. Μόλις τις κάνω MDIChild τότε δεν λειτουργεί ο παραπάνω κώδικας.&lt;br&gt;&lt;br&gt;Καμιά ιδέα???&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;</description></item></channel></rss>