<?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>Απ: Closing a window form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/57768.aspx</link><pubDate>Fri, 19 Mar 2010 23:09:46 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:57768</guid><dc:creator>object+</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/57768.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=57768</wfw:commentRss><description>Μια λυση... &amp;nbsp;στο button να βαλεις αλλο msg και με ενα override της winproc να δεις αν &amp;nbsp;πατηθηκε το sys close η το δικο σου κουμπι :)&lt;div&gt;&lt;pre&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.ComponentModel;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Data;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Drawing;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Linq;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Text;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Windows.Forms;

&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;namespace&lt;/span&gt; aoclosing
{
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;enum&lt;/span&gt; WMsgs : &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt;
    {
        Create &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; 1,
        Destroy,
        Close &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; 16,
        MyClose &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; 199990
    }
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; partial &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;class&lt;/span&gt; Form1 : Form
    {
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; Form1()
        {
            InitializeComponent();
        }
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;protected&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;override&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; WndProc(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ref&lt;/span&gt; Message m)
        {

            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (m.Msg == (&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt;)WMsgs.Close)
            {
                var result &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; MessageBox.Show(&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Are you sure?\n SYSTEM BUTTON CLOSE"&lt;/span&gt;, &lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Hey!"&lt;/span&gt;, MessageBoxButtons.YesNo);
                &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (result == DialogResult.Yes)
                {
                    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;base&lt;/span&gt;.WndProc(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ref&lt;/span&gt; m);
                }
                &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;else&lt;/span&gt;
                {
                    Message defMsg &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; Message.Create(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.Handle, 0, IntPtr.Zero, IntPtr.Zero);
                    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;base&lt;/span&gt;.WndProc(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ref&lt;/span&gt; defMsg);
                    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;return&lt;/span&gt;;
                }
            }
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (m.Msg == (&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt;)WMsgs.MyClose)
            {
                var result &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; MessageBox.Show(&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Are you sure?\n MY BUTTON CLOSE"&lt;/span&gt;, &lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Hey!"&lt;/span&gt;, MessageBoxButtons.YesNo);
                &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (result == DialogResult.Yes)
                {
                    Message CloseMsg &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; Message.Create(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.Handle, (&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt;)WMsgs.Close, IntPtr.Zero, IntPtr.Zero);
                    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;base&lt;/span&gt;.WndProc(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ref&lt;/span&gt; CloseMsg);
                }
                &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;else&lt;/span&gt;
                {
                    Message defMsg &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; Message.Create(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.Handle, 0, IntPtr.Zero, IntPtr.Zero);
                    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;base&lt;/span&gt;.WndProc(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ref&lt;/span&gt; defMsg);
                    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;return&lt;/span&gt;;
                }
            }
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;base&lt;/span&gt;.WndProc(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ref&lt;/span&gt; m);
        }

        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; button1_Click(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;object&lt;/span&gt; sender, EventArgs e)
        {
            Message CloseMsg &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; Message.Create(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.Handle, (&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt;)WMsgs.MyClose, IntPtr.Zero, IntPtr.Zero);
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.WndProc(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ref&lt;/span&gt; CloseMsg);
        }
    }
}&lt;/span&gt;&lt;/pre&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Απ: Closing a window form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/57737.aspx</link><pubDate>Thu, 18 Mar 2010 00:18:17 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:57737</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/57737.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=57737</wfw:commentRss><description>&lt;P&gt;To θέμα είναι όμως ότι έτσι αλλάζεις την τυπική συμπεριφορά που έχει ένα παράθυρο. Ο χρήστης, περιμένει ότι πατώντας το X button θα κλείσει το παράθυρο, χάνοντας ενδεχομένως τις αλλαγές που έχει κάνει, και θα επανέλθει στο προηγούμενο παράθυρο. Αν υλοποιήσεις αυτό που έχεις κατά νου, τότε θα τον αιφνιδιάσεις και θα τον βάλεις να πρέπει να θυμάται ότι στο δικό σου πρόγραμμα, πρέπει πάντοτε να προσέχει όταν κάνει "αυτό" γιατί τότε θα γίνει "το άλλο"... Είναι καλό να κρατάμε τις συμβάσεις κάτω από τις οποίες δουλεύουν τα πράγματα όπως επίσης και να δίνουμε στον χρήστη ένα αίσθημα αφάλειας και σιγουριάς.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Closing a window form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/57735.aspx</link><pubDate>Wed, 17 Mar 2010 22:24:29 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:57735</guid><dc:creator>dgg</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/57735.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=57735</wfw:commentRss><description>Όντως παρατήρησα οτι το UserClosing στο CloseReason, είτε κλείσεις απο το Χ, είτε απο κάποιο button δεν το διαχωρίζει. Έστω ότι η εφαρμογή έχει μία φόρμα η οποία σε κάποιο σημείο ανοίγει μία δεύτερη και κάνει hide την πρώτη. Αν τώρα στη δεύτερη πατήσουμε Χ, θέλουμε να κλείνει τελείως το πρόγραμμα, ενώ με button (στη δεύτερη πάντα) να εμφανίζεται πάλι η πρώτη.&lt;br&gt;&lt;br&gt;Αυτό με το flag και το function ακούγεται καλό. Βασικά μόνο με flag. Στο click event του button θα κλείνω την current form (child) και θα κάνω το flag true.Στο form _closing αν είναι flag=true τότε μην κάνεις τίποτα, αν false (σημαίνει πατήθηκε απλώς Χ, δεν εκτελέστηκε το button event), τότε κλείσε και το parent form. &lt;br&gt;&lt;br&gt;Not bad.&lt;br&gt;</description></item><item><title>Απ: Closing a window form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/57733.aspx</link><pubDate>Wed, 17 Mar 2010 20:48:46 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:57733</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/57733.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=57733</wfw:commentRss><description>&lt;P&gt;Προφανώς και πρέπει κανείς να διαβάζει το documentation, αλλά θα πρέπει και να δοκιμάζει αν η λύση που προτείνει δουλεύει. Το FormClosingEventArgs.CloseReason property δεν διαχωρίζει αν ο χρήστης πάτησε το Χ ή κάλεσε την Form.Close στο Click event ενός κουμπιού. Και στις δύο περιπτώσεις θα σου επιστρέψει UserClosing.&lt;/P&gt;
&lt;P&gt;Η αλήθεια είναι ότι βρίσκω κάπως περίεργη την ανάγκη γι αυτή τη διαφοροποίηση. Αν πρέπει να εκτελεστεί διαφορετικός κώδικας όταν πατηθεί κάποιο "Close" button, αυτό θα πρέπει να γίνει στο Click του button, όχι στο FormClosing. Θα πρέπει να μας εξηγήσεις τί προσπαθείς να κάνεις για να καταλάβουμε ποιά λύση είναι καλύτερη.&lt;/P&gt;
&lt;P&gt;Για παράδειγμα, μπορεί να θέλεις να εκτελέσεις κάποιο κώδικα είτε ο χρήστης κλείσει τη φόρμα με κουμπί είτε με το Χ, αλλά δεν θέλεις να το εκτελέσεις δύο φορές. Μία πιθανή λύση είναι να βάλεις αυτό τον κώδικα σε ένα function και να προσθέσεις ένα flag στη φόρμα το οποίο θα γίνεται true την πρώτη φορά που θα καλείς το function. Αν το function κληθεί δεύτερη φορά, απλά θα επιστρέφει αμέσως.&lt;/P&gt;</description></item><item><title>Απ: Closing a window form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/57728.aspx</link><pubDate>Wed, 17 Mar 2010 19:32:05 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:57728</guid><dc:creator>Βασιλειάδης Σπύρος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/57728.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=57728</wfw:commentRss><description>Στο FormClosing υπαρχει στο event το e.Reason. Δες τις διαθέσιμες τιμές στο documentation. RTFM</description></item><item><title>Closing a window form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/57727.aspx</link><pubDate>Wed, 17 Mar 2010 19:17:59 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:57727</guid><dc:creator>dgg</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/57727.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=57727</wfw:commentRss><description>Γειά σας,&lt;br&gt;&lt;br&gt;Γίνεται, στο formclosing ή στο formclosed event, να ελέγξω αν ο χρήστης έχει πατήσει το Χ button; Για την περίπτωση που θέλω να γίνονται διαφορετικά πράγματα αν κλείσει την φόρμα απο εκεί, απο το αν πατήσει κάποιο button πχ που κλείνει τη φόρμα.&lt;br&gt;&lt;br&gt;&lt;br&gt;Ευχαριστώ&lt;br&gt;</description></item></channel></rss>