IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Layout Windows CE


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 30
    Par défaut Layout Windows CE
    Bonjour, je suis en train de créer une application pour windows ce. Je voudrais que l'application appelle les autres fromulaires. Mais, toujours dans le form principale. Et malheureusement, cela fait maintenant un moment que je n'ai pas fait de C#. J'ai une erreur de ce type : Cannot implicitly convert type 'NesWinCE2.Form_1' to 'NesWinCE2.MainForm'. Est ce que qqun a une solution ? Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
        public partial class MainForm : Form
        {
     
            //the one and only instance of the mainform
            public static MainForm instance;
     
            public static MainForm curPanel;
     
            public MainForm()
            {
                instance = this;
     
                InitializeComponent();
            }
     
            private void MainForm_Load(object sender, EventArgs e)
            {
                //au chargement
                //MainForm.LoadPanel("main");
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                MainForm.LoadPanel("form1");
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                MainForm.LoadPanel("form2");
            }
     
            public static void LoadPanel(String panelName)
            {
     
                //removes the old panel
                if (curPanel != null)
                {
                    instance.Controls.Remove(curPanel);
                }
     
                switch (panelName)
                {
     
                    case "form1":
                        MainForm.instance.txt_stat.Text = "Form 1";
                        curPanel = new Form_1();
                        instance.Controls.Add(new Form_1());
                        break;
     
                    case "form2":
                        MainForm.instance.txt_stat.Text = "Form 2";
                        curPanel = new Form_2();
     
                        instance.Controls.Add(new Form_2());
                        break;
     
                    default:
                        MainForm.instance.txt_stat.Text = "Default";
                        break;
                }
                instance.Refresh();
            }
     
     
            private void pictureBox1_Click(object sender, EventArgs e)
            {
                MainForm.LoadPanel("form1");
            }
     
            private void pictureBox2_Click(object sender, EventArgs e)
            {
                MainForm.LoadPanel("form2");
            }
     
            private void btn_exit_Click(object sender, EventArgs e)
            {
                // ferme la fenetre
                this.Close();
            }
     
     
        }
    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2004
    Messages : 52
    Par défaut
    Pour afficher ton panel, qui est sur ta form principale, essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyPanel.BringToFront();

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 30
    Par défaut
    Ce que je voudrais c'est simplement sauvegarder le nom de la form dans curPanel qui est dans le select ( curPanel = new Form_1() ) mais le problème c'est qu'il est pas du même type. Et là, je sais pas comment résoudre..

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2004
    Messages : 52
    Par défaut
    Bonjour,
    En fait d'ajouter une form au controle de ta form principale.
    Je pense que ce n'est pas possible.

    Tu as 2 solutions:
    Soit tu charges de nouvelles form (par dessus ta form Main).
    Soit tu affiches des panels sur ta form Main.

    Si tu retiens la solution 2, il faut que:
    * Tu changes le type de ton attribut CurPanel en Panel et nom en Form.
    * Tu crées plusieurs Panels sur ta form. (Ils seront tous superposés les uns sur les autres).
    * Et quand tu veux en afficher, tu appeles la méthode BringToFront de ton panel.

    La solution du panel superposé est assez compliquée à gérer si tu as beaucoup de panels.

    As tu pensé à mettre un TabPanel (des onglets) sur ta form?

  5. #5
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 30
    Par défaut
    Merci de l'effort, j'ai trouvé le problème.

    C'est tout simplement que dans mes autres form le type était UserControl.

    Voici la solution pour les curieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    public partial class MainForm : Form
        {
            public static MainForm instance;
            public static UserControl curPanel;
     
            public MainForm()
            {
                instance = this;
                curPanel = null;
     
                InitializeComponent();
     
                // hide the cursor on Windows CE
                if (System.Environment.OSVersion.Platform == PlatformID.WinCE)
                {
                    Cursor.Hide();
                }
            }
     
            private void MainForm_Load(object sender, EventArgs e)
            {
                // startup
                LoadPanel("mainpanel");
            }
     
            public static void LoadPanel(String panelName)
            {
     
                // remove old panel
                if (curPanel != null)
                {
                    instance.Controls.Remove(curPanel);
                }
     
     
                switch (panelName)
                {
                    case "mainpanel":
                        curPanel = new MainPanel();                 
                        break;
     
                    case "config_small_coffee":
                        curPanel = new ConfigSmallCoffee();
                        break;
     
                    default:
                        LoadPanel("mainpanel");
                        break;
                }
     
                instance.Controls.Add(curPanel);
                instance.Refresh();
            }
     
     
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Layout] calculatrice windows en java
    Par arthurembo dans le forum Agents de placement/Fenêtres
    Réponses: 0
    Dernier message: 29/05/2009, 11h53
  2. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2006, 15h28
  3. [C#] Windows Form Layout
    Par therock dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/07/2006, 17h44
  4. [SWING][Layout]Window simple cadre
    Par phil_ma dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 21/06/2005, 14h59
  5. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo