Si un item est sélectionné dans une listbox

Résolu
thibaultlavoisey Messages postés 11 Date d'inscription samedi 12 mars 2011 Statut Membre Dernière intervention 18 août 2011 - 17 août 2011 à 15:42
Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 - 18 août 2011 à 21:35
bonjour,

je travaille actuellement sur un projet Application Windows Forms, qui à pour but de permettre de visualiser le texte que l'on a écrit dans une textbox sous la police que l'on a sélectionné dans une listbox. Le projet permet aussi d'ajouter/supprimer une police.

je code actuellement le bouton de suppression. j'essaye d'appliquer une condition, à savoir avant de supprimer un élément de la listbox, il faut vérifier qu'un élément a bien été sélectionné.

j'ai donc fais :
if (listbox.SelectedItem)
{
...
}

mais j'ai une erreur : Impossible de convertir implicitement le type 'object' en 'bool'. Une conversion explicite existe (un cast est-il manquant ?)

et je n'arrive pas à la résoudre..

toute aide est la bienvenue :)

amicalement,
A voir également:

23 réponses

Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 656
17 août 2011 à 23:49
Ha oui pour
Pas d'erreur, mais lors du débug : L'exception NullReferenceException n'a pas été gérée - La référence d'objet n'est pas définie à une instance d'un objet.


tu as écrit plus haut;
fontfamill = null;
forcément il n'est plus définit.

Tu dois pouvoir replacer
for (long i = fontfamill.GetLowerBound(0); i <= fontfamill.GetUpperBound(0); i++)
par un ForEach qui t'évite GetLowerBound(0) et GetUpperBound(0) mais c'est comme tu préfères.

Whismeril
0
thibaultlavoisey Messages postés 11 Date d'inscription samedi 12 mars 2011 Statut Membre Dernière intervention 18 août 2011
18 août 2011 à 20:31
Petit message pour vous dire que je n'ai pas trouvé la solution et laché le forum sans rien dire, je suis un peu débordé et j'ai pas eu le temps de me remettre dessus :/ je fais ça ce soir !

le problème whismeril, c'est que là j'ai mis le code du chargement du formulaire dans le bouton. comment faire en sorte que le bouton trouve le code sans l'inclure dedans ?
0
Whismeril Messages postés 19040 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 mai 2024 656
18 août 2011 à 21:35
Bonsoir,

aller te coucher à 23h30 et reprendre le forum à 20h30, c'est pas vraiment tout lâcher non plus!

Pour ta question de ce soir, ça fleurte avec l'organisation de ton code, étant autodidacte je ne suis pas forcément très académique.
Je tente de suivre les recommandations que j'ai vu sur le forum, mais un post récent ou il a été question de convention de nommage m'a prouvé que je ne suis pas collé/collé sur les règles de l'art.

Tout d'abord j'utilise des regions.

Ce que je ferais ressemble à ça:


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;

namespace Visualisation
{
    public partial class frmVisu : Form
    {

#region Déclarations
       //ici tu déclares toutes les variables dont la portée est le formulaire
       //pour "voir" la portée d'une variable, il suffit de chercher le couple de {} qui l'encadre.
       //donc ce que tu déclares ici est valable pour tout "partial class frmVisu"

       int toto;
       string tata = "tata";// tu peux initialiser la variable ou non (dans certains cas ce n'est pas possible)
       
       //c'est là que je déclarerais FontFamily[]
       FontFamily[] fontfamill;
#endregion


#region Initilisation

        public frmVisu()
        {
            InitializeComponent();
        }

        private void frmVisu_Load(object sender, EventArgs e)
        {
            ChargeMesFont();//voir en dessous

            lsbPolice.SelectedIndex = 0;

            lblVisu.Text = "Voici le résultat";

        }

        private void ChargeMesFont()//te permets si besoin de refaire le chargement
        {
            System.Drawing.Text.InstalledFontCollection fonts = new
            System.Drawing.Text.InstalledFontCollection();
            FontFamily[] fontfamill = fonts.Families;
            for (long i = fontfamill.GetLowerBound(0); i <= fontfamill.GetUpperBound(0); i++)
                lsbPolice.Items.Add(fontfamill[i].Name);
            //fontfamill = null;  Surtout pas si tu veux t'en resservir
            fonts = null;
        }

#endregion


#region IHM
        private void btValider_Click(object sender, EventArgs e)
        {
             ....
        }

        private void btSupprimer_Click(object sender, EventArgs e)
        {
             ....
        }

        private void btQuitter_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btAffiche_Click(object sender, EventArgs e)
        {
             ....
        }
#endregion

    }
}


De cette façon, FontFamily est accessible partout et c'est mieux "rangé" et lisible, d'autant que tu peux collapser les regions dont tu ne t'occupes pas.

Whismeril
0
Rejoignez-nous