• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

combobox i przypisana wartość do labela ?

VPS Starter Arubacloud
0 głosów
254 wizyt
pytanie zadane 24 czerwca 2023 w C# przez Mati336 Użytkownik (560 p.)

Witam! Pewno to banał ale nie mogę sobie poradzić z pewnym zadaniem. Mam combobox przykładowo z kolorami po angielsku i po wybraniu chcę żeby się on pojawiał w labelu po polsku - czyli inna, ale przyporządkowana wartość w labelu. Teraz mam tylko tyle że ta sama nazwa pojawia się w labelu. Jak to zmienić ?

namespace WindowsFormsApp26
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            comboBox1.Items.Add("White");
            comboBox1.Items.Add("Red");
            comboBox1.Items.Add("Black");   
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string nazwa = comboBox1.Text;
            lb.Text = nazwa;
        }
    }
}

 

2 odpowiedzi

0 głosów
odpowiedź 25 czerwca 2023 przez Velta Maniak (52,410 p.)

Proponowałbym sprawdzać po indeksie, przy użyciu tablicy:

private static readonly string[] ColorsInPolish = new string[]
{
    "biały",
    "czerwony",
    "czarny"
};
int selectedIndex = comboBox1.SelectedIndex;

if (selectedIndex == -1)
{
    // obsługa niewybrania elementu z listy
}

string translatedColor = ColorsInPolish[selectedIndex];

Jeśli bardzo potrzebujesz przez Text, możesz użyć słownika:

private static readonly Dictionary<string, string> ColorsInPolish = new()
{
    { "White", "biały" },
    { "Red", "czerwony" },
    { "Black", "czarny" }
};
string? selectedOption = comboBox1.Text;

if (string.IsNullOrEmpty(selectedOption))
{
    // obsługa niewybrania elementu z listy
}

string translatedColor = ColorsInPolish[selectedOption!];

 

0 głosów
odpowiedź 25 czerwca 2023 przez VBService Ekspert (255,440 p.)
edycja 26 czerwca 2023 przez VBService

IMO drugi sposób zaproponowany przez @Velta; (użycie Dictionary) jest dobrym rozwiązaniem i też go polecam, ale w ramach ciekawostki prezentuję rozwiązanie z użyciem List-y

 

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private static readonly List<ColorItem> colorsEnglishToPolish = new List<ColorItem>()
        {
            new ColorItem("White", "biały"),
            new ColorItem("Red", "czerwony"),
            new ColorItem("Black", "czarny")
        };

        public Form1()
        {
            InitializeComponent();

            comboBox1.DataSource = colorsEnglishToPolish;
            comboBox1.DisplayMember = "DisplayNameFrom";
            comboBox1.ValueMember = "DisplayNameTo";

            label1.Text = String.Empty;
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            label1.Text = comboBox1.SelectedValue.ToString();
        }
    }

    class ColorItem
    {
        public string DisplayNameFrom { get; set; }
        public string DisplayNameTo { get; set; }

        public ColorItem(string displayNameFrom, string displayNameTo)
        {
            DisplayNameFrom = displayNameFrom;
            DisplayNameTo = displayNameTo;
        }
    }
}

 

Podobne pytania

–1 głos
1 odpowiedź 683 wizyt
pytanie zadane 28 listopada 2018 w Java przez mprofit Nowicjusz (180 p.)
0 głosów
1 odpowiedź 74 wizyt
0 głosów
1 odpowiedź 273 wizyt
pytanie zadane 17 lutego 2023 w C# przez MarekPrzywarek Nowicjusz (220 p.)

92,833 zapytań

141,777 odpowiedzi

320,824 komentarzy

62,164 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...