VS2008 και Windows Forms

Συζητήσεις για τις γλώσσες του dot Net και για του Visual Studio της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Nantia
Δημοσιεύσεις: 12
Εγγραφή: 16 Ιαν 2008 13:39

VS2008 και Windows Forms

Δημοσίευση από Nantia » 28 Αύγ 2008 23:39

Καλησπέρα παιδιά, έχω κάποιο πρόβλημα και θέλω τη βοήθειά σας.

Έχω δημιουργήσει μια εφαρμογή με VS2008 (C#) με Windows Forms όπου μπορώ να μεταβαίνω σε κάποιες forms και μπορώ να κάνω διάφορες επιλογές και να αλλάξω τις default τιμές που έχουν κατά τη δημιουργία τους.

Ωστόσο, ο κώδικάς μου δημιουργεί σε κάθε μετάβαση εκ νέου τη form, επομένως δεν διατηρούνται οι αλλαγές που μπορεί να έκανα πριν. Παρακάτω είναι ένα παράδειγμα:

private void bedroom_pic_Click(object sender, EventArgs e)
{
this.Visible = false;
Bedroom f2 = new Bedroom();
f2.Show();
}

Δηλαδή με κάθε κλικ, δημιουργείται ξανά η form(φυσικά με τις default τιμές και όχι αυτές που άλλαξα)!

Υποψιάζομαι πως αυτό που πρέπει να κάνω για να διατηρηθούν οι επιλογές είναι να "φορτώσω" όλες τις forms κατά την εκκίνηση της εφαρμογής με false Visibility και όταν μεταβαίνω σε κάποια από αυτές να αλλάζει το visibility αλλά δεν ξέρω πως να το κάνω! H form από μόνη της δεν αναγνωρίζει visibility σαν property και οι μεταβλητές για να την "επεξεργαστώ" δεν μεταφέρονται στις private διαδικασίες! Καμμιά βοήθεια plz?? :question:

Nantia
Δημοσιεύσεις: 12
Εγγραφή: 16 Ιαν 2008 13:39

VS2008 και Windows Forms

Δημοσίευση από Nantia » 31 Αύγ 2008 03:47

Παιδιά δεν υπάρχει κανείς να βοηθήσει;
Είναι κάτι βασικό για τις φόρμες, δεν νομίζω να είναι πολύ δύσκολο!

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

VS2008 και Windows Forms

Δημοσίευση από dva_dev » 31 Αύγ 2008 06:32

Για να διατηρηθούν οι τιμές που έχεις δώσει πρέπει κάπου να τις αποθηκεύσεις, όπως και να τις φορτώνεις στη φόρμα σου.
Με πολύ απλά λόγια:
Το πρώτο που πρέπει να αποφασίσεις είναι το που θα αποθηκεύονται οι τιμές: Στη μνήμη μόνο για όσο τρέχει η εφαρμογή; Σε κάποιο αρχείο; Σε κάποια database;
Κατόπιν όταν δημιουργείς τη φόρμα σου (και κατά προτίμηση πρίν την εμφανίσεις) θα πρέπει να φορτώνεις τις τιμές που έχεις αποθηκεύσει.
Τέλος πριν κλείσεις τη φόρμα σου (αν δεν έχεις πατήσει κάποιο κουμπί "Ακύρωση" ή κάτι σχετικό) θα αποθηκεύεις τις νέες τιμές.

Nantia
Δημοσιεύσεις: 12
Εγγραφή: 16 Ιαν 2008 13:39

VS2008 και Windows Forms

Δημοσίευση από Nantia » 31 Αύγ 2008 17:05

Με ενδιαφέρει απλά να μην χάνονται οι τιμές όταν βγαίνω από μια φόρμα και ξαναμπαίνω, οπότε απλά για όσο τρέχει η εφαρμογή.
Δηλαδή πως ακριβώς γράφονται αυτές οι εντολές αποθήκευσης και φορτώματος τιμών;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

VS2008 και Windows Forms

Δημοσίευση από dva_dev » 01 Σεπ 2008 06:03

Τα πιο απλά ολοκληρωμένα παραδείγματα που έχω υπ' όψη μου:
http://www.codeproject.com/KB/cs/RegHelper.aspx
http://www.codeproject.com/KB/cs/simple ... abase.aspx
http://www.codeproject.com/KB/cs/ManageDataNoDB_CS.aspx

Nantia
Δημοσιεύσεις: 12
Εγγραφή: 16 Ιαν 2008 13:39

VS2008 και Windows Forms

Δημοσίευση από Nantia » 01 Σεπ 2008 22:20

Ευχαριστώ πολύ!! :D
Νομίζω πως το τελευταίο θα βοηθήσει αρκετά, θα το κοιτάξω λίγο καλύτερα και θα σου πω!

papi1
Δημοσιεύσεις: 8
Εγγραφή: 01 Φεβ 2009 12:58

VS2008 και Windows Forms

Δημοσίευση από papi1 » 01 Φεβ 2009 14:17

Μα γιατι δε κανεις μια κυρια φορμα και απλος να κανεις show hide ?

Κώδικας: Επιλογή όλων

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1 f1, f2;
        public List<Form> forms;
        public bool IsPArent;
        public Form1&#40;&#41;
        &#123;
            InitializeComponent&#40;&#41;;
            IsPArent = false;
            forms = new List<Form>&#40;&#41;;
          
        &#125;
        protected override void OnLoad&#40;EventArgs e&#41;
        &#123;

            f1 = new Form1 &#123; Text = "form1", forms = this.forms,IsPArent=true&#125;;
            f1.Hide&#40;&#41;;
            f2 = new Form1 &#123; Text = "form2", forms = this.forms ,IsPArent=true&#125;;
            f2.Hide&#40;&#41;;
            if &#40;!IsPArent&#41;
            &#123;
                forms.Add&#40;f1&#41;;
                forms.Add&#40;f2&#41;;
                forms.Add&#40;this&#41;;
            &#125;
            base.OnLoad&#40;e&#41;;
        &#125;
        private void button1_Click&#40;object sender, EventArgs e&#41;
        &#123;
            //open form1

            foreach &#40;var item in forms&#41;
            &#123;
                if &#40;item.Text == "form1"&#41; item.Show&#40;&#41;;
                else item.Hide&#40;&#41;;
            &#125;
        &#125;

        private void button2_Click&#40;object sender, EventArgs e&#41;
        &#123;
            foreach &#40;var item in forms&#41;
            &#123;
                if &#40;item.Text == "form2"&#41; item.Show&#40;&#41;;
                else item.Hide&#40;&#41;;
            &#125;

        &#125;

        private void button3_Click&#40;object sender, EventArgs e&#41;
        &#123;
            //etc

        &#125;

    &#125;
&#125;

Απάντηση

Επιστροφή στο “dot Net και Visual Studio”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες