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 :

conseil construction IHM [Débutant]


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut conseil construction IHM
    Bonjour,

    Je suis actuellement en train d'essayer de parametrer un "style" aux pages de mon application.

    Seulement, je voulais savoir comment s'y prendre pour que l'app s'adapte à la taille de l'écran de l'utilisateur.

    En web, on peut mettre une taille minimum et l'affichage de la page s'adapte plus ou moins toutes seules.

    Seulement la, j'ai une form MDI qui contient plusieurs autres form, j'ai développé l'app sur un écran assez petit et je me rend compte sur une autre machine qui à un écran plus large, lorsque je passe mon app en plein écran, j'ai juste du blanc sur les cotés qui s'ajoute et mes pages ne se recentre pas !!

    Ce n'est pas très esthétiques, je voudrais donc avoir des conseils sur comment géré ce type de problème en programmation ??

    Merci d'avance hihi.

  2. #2
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonsoir,

    Alors là, il faut que tu joues avec les propriétés Dock et Anchor de tes Control dans leur container et les containers dans leur container etc...

    Bon courage parce que c'est assez fastidieux (ou ch**** ) surtout quand tu as beaucoup de control.

    Tu as aussi les composants qui gèrent ça plus ou moins seuls comme les FlowLayoutPanel, TableLayoutPanel ou SplitPanel...

  3. #3
    Membre émérite

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Points : 2 372
    Points
    2 372
    Par défaut
    Tout a fait d'accord avec sisqo60

    Attention toutefois, cette pratique est souvent tres mauvaise (on ne peux pas prendre en compte toutes les resolutions de l'ecran), il y a un risque de de déformation. Regarde les applications sur ton pc et les sites web.

    Tu peux centrer ta page c'est possible, ou bien mettre un theme de fond.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    Effectivement, en cherchant bien j'ai trouvé les propriété anchor et dock dont je me suis servis.

    Dans ma fenêtre principale j'ai egalement deux DGV (DataGridView). Et pour que la taille s'adapte à l'agrandissement ou rétrécissement de la fenêtre, je calcule le pourcentage d'agrandissement de la fenêtre que je répartie sur mes DGV et ses colonnes à l'intérieur. Est - ce une bonne solution pensez-vous ??

    Sa à l'air de marcher mais ce n'est pas très stable !! Il y a des bugs dans les calculs quand les ajustements de taille se font manuellement avec la souris et non avec le boutton classique "Agrandir" en haut à droite des pages.

  5. #5
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Personnellement, pour tes 2 datagrids, je les placerais dans un split panel avec la barre à 50%. Ce split panel étant configuré en Dock.Fill

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    Merci, effectivement le datagridView se redimensionne automatiquement hihi .

    Mais bon, j'ai encore une dernière problématique :
    J'ai associé à mon DGV 5 colonnes avec des tailles fixes :
    - Col 1 : 70
    - Col 2 : 210
    - Col 3 : 60
    - Col 4 : 60
    - Col 5 : 30
    Et lorsque le DGV est redimensionné, je voudrai que les colonnes s'ajuste en répartissent la place supplémentaire de tel façon :
    - Col 1 : Ne bouge pas
    - Col 2 : 80%
    - Col 3 : 10%
    - Col 4 : 10%
    - Col 5 : Ne bouge pas

    Je ne sais pas si je suis assez claire... Si ce n'est pas possible de faire un ajustement avec une tel précision, comment faire pour que les colonnes s'ajuste mais en gardant un minimum le type de répartition initiale.

    Merci beaucoup pour votre aide, sa me facilite bien les choses

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    Je suis tombé sur la propriété FillWeight, qui à l'air de correspondre à ce que je veux faire mais j'ai dû mal à comprendre sont fonctionnement.

    Pensez-vous que sa pourrait être une solution ? Si oui, comment l'utiliser ???

  8. #8
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Hello,

    tu es en effet sur la bonne voie. cf la doc: http://msdn.microsoft.com/fr-fr/library/ms171605.aspx

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    Oui, j'ai vu sa et j'ai fait des test manuellement qui sont concluant seulement dés que j'essaye de reproduire la même chose en code, j'ai des erreurs.

    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
     
     try
                {
                    monDGV.Columns[0].Frozen = true;
                    monDGV.Columns[1].Frozen = false;
                    monDGV.Columns[1].FillWeight = 12;
                    monDGV.Columns[2].Frozen = false;
                    monDGV.Columns[2].FillWeight = 52;
                    monDGV.Columns[3].Frozen = false;
                    monDGV.Columns[3].FillWeight = 18;
                    monDGV.Columns[4].Frozen = false;
                    monDGV.Columns[4].FillWeight = 18;
                    monDGV.Columns[5].Frozen = true;
     
                    monDGV.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    monDGV.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    monDGV.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    monDGV.Columns[4].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                }
                catch (Exception er)
                { }
    Voilà, avec les mêmes critères de façon manuelle tous ce passe bien alors que en passant les paramètres en code au moment où j'instancie la propriété : DataGridViewAutoSizeColumnMode.Fill, une erreur me dit que c'est impossible car la cellule est figé !!!

    Et encore plus étrange, lorsque mon code est écrit de cette manière :

    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
     
                try
                {
                    monDGV.Columns[0].Frozen = true;
                    monDGV.Columns[1].Frozen = false;
                    monDGV.Columns[1].FillWeight = 12;
                    monDGV.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    monDGV.Columns[2].Frozen = false;
                    monDGV.Columns[2].FillWeight = 52;
                    monDGV.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    monDGV.Columns[3].Frozen = false;
                    monDGV.Columns[3].FillWeight = 18;
                    monDGV.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    monDGV.Columns[4].Frozen = false;
                    monDGV.Columns[4].FillWeight = 18;
                    monDGV.Columns[4].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    monDGV.Columns[5].Frozen = true;
                }
                catch (Exception er)
                { }
     
                monDGV.Columns[0].Width = 70;
                monDGV.Columns[5].Width = 30;
     
                }
    Il ne plante pas et pourtant le résultat et toujours le même : Null !! Mes colonnes ne sont pas redimensionnés.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    Je viens de repenser que les colonnes de mon datagridview sont dabord créé depuis sa source qui est un datatable. Dois-je dabord faire en sorte que les dataColumn ne soit pas figé ??

    Si oui, la propriété Frozen n'existant pas ? Laquelle faut il modifier ?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    Bon bah j'ai résolu le problème, j'ai garder le code affiché au dessus qui fonctionne enfin du fait que je n'utilise plus un datatable en tant que source de données mais insère directement les données avec le dataReader.

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

Discussions similaires

  1. Conseil construction table
    Par calou_33 dans le forum SQL
    Réponses: 3
    Dernier message: 09/03/2010, 23h37
  2. Conseils construction site
    Par marined dans le forum Dreamweaver
    Réponses: 5
    Dernier message: 07/05/2009, 09h06
  3. Demande de conseils : IHM en Java
    Par Adrien22 dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 01/08/2006, 11h11
  4. [conseil]creation d'une ihm
    Par blaise_laporte dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 20/04/2006, 11h23
  5. Conseils/docs sur la création d'ihm
    Par hellbilly dans le forum Windows
    Réponses: 3
    Dernier message: 19/09/2005, 21h53

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