ComboBoxText GTK - Visual Studio Code / Linux

Jerusalema Messages postés 2 Date d'inscription vendredi 18 août 2023 Statut Membre Dernière intervention 20 août 2023 - Modifié le 21 août 2023 à 13:07
Whismeril Messages postés 19030 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 avril 2024 - 20 août 2023 à 21:48

j'aurai besoin d'aide car je démarre en programmation C# avec GTK et Glade (.Net 6 gtk+ 3.18)

j'aimerai afficher une valeur par défaut dans une ComboBoxText  (ex item i3);

ci dessous le fichier issu de Glade et la classe MainWindow pour l'affichage

J'ai essayé comBoBoxText.SetActive[3], Active[3], ... comme suggéré dans des forums : sans succès;

dotnet run me renvoie 

"error CS1061: 'ComboBoxText' ne contient pas de définition pour 'SetActive' et aucune méthode d'extension"

"error CS1955: Impossible d'utiliser un membre 'ComboBox.Active' ne pouvant pas être appelé comme une méthode"

qui pourrais m'aider ?

<object class="GtkBox">
        <property  ..... </property>
        <child>
          <object class="GtkLabel" id="label1">
            <property .............Priorite</property>
          </object>
          <packing>
            <property ........property>
          </packing>
        </child>
        <child>
          <object class="GtkComboBoxText" id="comboBoxText">
            <property name="visible">True</property>
            <property name="can-focus">False</property>
            <items>
              <item id="i1" translatable="yes">1</item>
              <item id="i2" translatable="yes">2</item>
              <item id="i3" translatable="yes">3</item>
              <item id="i4" translatable="yes">4</item>
            </items>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">1</property>
          </packing>
        </child>
      </object>

et le fichier MainWindow en C#

using System;
using Gtk;
using UI = Gtk.Builder.ObjectAttribute;
namespace Essaigtk
{
    class MainWindow : Window
    {
        [UI] private ComboBoxText comboBoxText = null;

        public MainWindow() : this(new Builder("MainWindow.glade")) { }
        private MainWindow(Builder builder) : base(builder.GetRawOwnedObject("MainWindow"))
        {
            builder.Autoconnect(this);
            comboBoxText.?????;
            DeleteEvent += Window_DeleteEvent;
        }
        private void Window_DeleteEvent(object sender, DeleteEventArgs a)
        {
            Application.Quit();
        }
    }
}
A voir également:

2 réponses

Jerusalema Messages postés 2 Date d'inscription vendredi 18 août 2023 Statut Membre Dernière intervention 20 août 2023
Modifié le 21 août 2023 à 13:08

Finalement je suis passé par une comboBox et ai utilisé la propriéte comboBox.Active

private MainWindow(Builder builder) : base(builder.GetRawOwnedObject("MainWindow"))
        {
            builder.Autoconnect(this);
            ListStore prioriteChoice = new ListStore (typeof(string));
            prioriteChoice.AppendValues("1");
            prioriteChoice.AppendValues("2");
            prioriteChoice.AppendValues("3");
            CellRendererText renderer = new CellRendererText();
            comboBox.Model = prioriteChoice; 
            comboBox.PackStart (renderer, true);  
            comboBox.AddAttribute (renderer, "text", 0);
            comboBox.Active=3;      
            
            DeleteEvent += Window_DeleteEvent;
        }
0
Whismeril Messages postés 19030 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 avril 2024 656
20 août 2023 à 21:48

Bonsoir

merci d'avoir posté ta solution. Je n'avais pas répondu car je ne connais pas la déclinaison linux de C# et je n'ai pas trop joué avec la framework 6.

Par exemple, je ne connais pas le comboboxtext.

Cependant, le message d'erreur 

"error CS1955: Impossible d'utiliser un membre 'ComboBox.Active' ne pouvant pas être appelé comme une méthode"

laisse à penser que tu as essayé d'affecter Active comme une méthode c'est-à-dire 

comboBox.Active(3);

Alors qu'il semble que c'est une propriété qui s'affecte avec un egal comme tu l'as fait dans ton code d'aujourd'hui.

Peut-être devrais tu faire un test avec un comboboxtext et l'affection par égal.

Si ça ne marche pas, il semble aussi selon ce message que comboboxtext dérive de combobox. Donc caster ton comboboxtext en combobox le temps d'affecter cet valeur devraos fonctionner.

PS pour les extraits de code, il faut choisir le langage pour que la coloration fonctionne comme il faut. Voir ce petit tutoriel https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code


0
Rejoignez-nous