Si un item est sélectionné dans une listbox

[Résolu]
Signaler
Messages postés
11
Date d'inscription
samedi 12 mars 2011
Statut
Membre
Dernière intervention
18 août 2011
-
Messages postés
16135
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 août 2021
-
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,

23 réponses

Messages postés
16135
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 août 2021
557
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
Messages postés
11
Date d'inscription
samedi 12 mars 2011
Statut
Membre
Dernière intervention
18 août 2011

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 ?
Messages postés
16135
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 août 2021
557
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