Як зрабіць бачным іншы выпадальны пры выбары значэння ў бягучым поле са спісам?

У мяне ёсць выпадальны (CB1) і ўтрымлівае элементы як 1,2,3 і я хачу зрабіць яшчэ выпадальны (CB2) бачны , калі я выберыце значэнне 3 з CB1 . Якое ўласцівасць павінен я карыстальнік. Я працую над дадаткам на аснове вокны, і я выкарыстоўваю C# ў кодзе ззаду мовы. Прыклад можа быць вялікім, каб вырашыць гэтую праблему. Выпадальны CBFormat складаецца з спісу элементаў наступным чынам:

var allWiegandFormat = WiegandConfigManager.RetrieveAllWiegandFormats();
            var allWiegandList = new List(allWiegandFormat);

            CBFormat.Items.Add(allWiegandList[0].Id);
            CBFormat.Items.Add(allWiegandList[3].Id);
            CBFormat.Items.Add(allWiegandList[4].Id);
            CBFormat.Items.Add(allWiegandList[5].Id);

            CBProxCardMode.Items.Add(ProxCardMode.Three);
            CBProxCardMode.Items.Add(ProxCardMode.Five);

Цяпер я хачу, каб паказаць акно комба CBPorxCardMode, калі я выбіраю другі пункт з выпадальнага спісу CBFormat.

3
Пакажыце сваю працу і сказаць людзям, што вы спрабавалі ..
дададзена аўтар Soner Gönül, крыніца
<�Код> дадатак на аснове Windows, смутны. Вы карыстаецеся WinForms або тэхналогіі WPF?
дададзена аўтар Steve, крыніца
@ SonerGönül: Я рэдагаваў пытанне.
дададзена аўтар Ankur Sharma, крыніца
@ SonerGönül: Я рэдагаваў пытанне.
дададзена аўтар Ankur Sharma, крыніца
@Steve вокны формы
дададзена аўтар Ankur Sharma, крыніца

10 адказы

паспрабуйце гэта

Private void CB1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    Combobox CB = (ComboBox) sender;
    if(CB.SelectedIndex != -1)
    {
        int x = Convert.ToInt32(CB.Text)
        if(x == 3)
        {
          CB2.Visible = True;
        }
    }
}
2
дададзена
@AnkurSharma: Гэта нармальна .. але вы проста upvoted не галасавалі як адказ ..
дададзена аўтар matzone, крыніца
@AnkurSharma: Вы можаце прагаласаваць гэта як адказ
дададзена аўтар matzone, крыніца
Дзякуючы чалавеку! Гэта спрацавала!
дададзена аўтар Ankur Sharma, крыніца
Вы можаце адзначыць гэтае пытанне, карысна: р
дададзена аўтар Ankur Sharma, крыніца

паспрабуйце гэта

Private void CB1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    Combobox CB = (ComboBox) sender;
    if(CB.SelectedIndex != -1)
    {
        int x = Convert.ToInt32(CB.Text)
        if(x == 3)
        {
          CB2.Visible = True;
        }
    }
}
2
дададзена
@AnkurSharma: Гэта нармальна .. але вы проста upvoted не галасавалі як адказ ..
дададзена аўтар matzone, крыніца
@AnkurSharma: Вы можаце прагаласаваць гэта як адказ
дададзена аўтар matzone, крыніца
Дзякуючы чалавеку! Гэта спрацавала!
дададзена аўтар Ankur Sharma, крыніца
Вы можаце адзначыць гэтае пытанне, карысна: р
дададзена аўтар Ankur Sharma, крыніца

паспрабуйце гэта

Private void CB1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    Combobox CB = (ComboBox) sender;
    if(CB.SelectedIndex != -1)
    {
        int x = Convert.ToInt32(CB.Text)
        if(x == 3)
        {
          CB2.Visible = True;
        }
    }
}
2
дададзена
@AnkurSharma: Гэта нармальна .. але вы проста upvoted не галасавалі як адказ ..
дададзена аўтар matzone, крыніца
@AnkurSharma: Вы можаце прагаласаваць гэта як адказ
дададзена аўтар matzone, крыніца
Дзякуючы чалавеку! Гэта спрацавала!
дададзена аўтар Ankur Sharma, крыніца
Вы можаце адзначыць гэтае пытанне, карысна: р
дададзена аўтар Ankur Sharma, крыніца

Пачнем з ўласцівасць Бачны CB2 мае значэнне, якое False і дадаць код апрацоўшчыка падзей для SelectedIndexChanged на CB1 праз канструктар WinForms

private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    ComboBox comboBox = (ComboBox) sender;
    if(comboBox.SelectedItem != null)
    {
        int id = Convert.ToInt32(comboBox.SelectedItem)
        cbo2.Visible = (id == 3)
    }
}

Гэта калі выказаць здагадку, што ідэнтыфікатар, які вы дадаеце ў першы комба, гэта цэлалікавых значэнне, як гэта здаецца.
Таксама rembember, што SelectedIndexChanged падзея будзе называцца нават калі змяніць SelectedItem праграмна, а не толькі тады, калі карыстальнік змяняе значэнне. Акрамя таго, калі змяненне карыстальнік зноў выбар адыходзячы ад ID == 3 спосаб зноў паставіў перад Cbo2 не відаць.

0
дададзена

Пачнем з ўласцівасць Бачны CB2 мае значэнне, якое False і дадаць код апрацоўшчыка падзей для SelectedIndexChanged на CB1 праз канструктар WinForms

private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    ComboBox comboBox = (ComboBox) sender;
    if(comboBox.SelectedItem != null)
    {
        int id = Convert.ToInt32(comboBox.SelectedItem)
        cbo2.Visible = (id == 3)
    }
}

Гэта калі выказаць здагадку, што ідэнтыфікатар, які вы дадаеце ў першы комба, гэта цэлалікавых значэнне, як гэта здаецца.
Таксама rembember, што SelectedIndexChanged падзея будзе называцца нават калі змяніць SelectedItem праграмна, а не толькі тады, калі карыстальнік змяняе значэнне. Акрамя таго, калі змяненне карыстальнік зноў выбар адыходзячы ад ID == 3 спосаб зноў паставіў перад Cbo2 не відаць.

0
дададзена

Пачнем з ўласцівасць Бачны CB2 мае значэнне, якое False і дадаць код апрацоўшчыка падзей для SelectedIndexChanged на CB1 праз канструктар WinForms

private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    ComboBox comboBox = (ComboBox) sender;
    if(comboBox.SelectedItem != null)
    {
        int id = Convert.ToInt32(comboBox.SelectedItem)
        cbo2.Visible = (id == 3)
    }
}

Гэта калі выказаць здагадку, што ідэнтыфікатар, які вы дадаеце ў першы комба, гэта цэлалікавых значэнне, як гэта здаецца.
Таксама rembember, што SelectedIndexChanged падзея будзе называцца нават калі змяніць SelectedItem праграмна, а не толькі тады, калі карыстальнік змяняе значэнне. Акрамя таго, калі змяненне карыстальнік зноў выбар адыходзячы ад ID == 3 спосаб зноў паставіў перад Cbo2 не відаць.

0
дададзена

Выкарыстоўвайце SelectionChangeCommitted падзея і падпісацца ваш CB1 да яго:

// In form load or form initialization
cb1.SelectionChangeCommitted += ComboBoxSelectionChangeCommitted;

// Event
private void ComboBoxSelectionChangeCommitted(object sender, EventArgs e)
{
    cb2.Visible = cb1.SelectedItem != null && cb1.Text == "3";
}
0
дададзена

Выкарыстоўвайце SelectionChangeCommitted падзея і падпісацца ваш CB1 да яго:

// In form load or form initialization
cb1.SelectionChangeCommitted += ComboBoxSelectionChangeCommitted;

// Event
private void ComboBoxSelectionChangeCommitted(object sender, EventArgs e)
{
    cb2.Visible = cb1.SelectedItem != null && cb1.Text == "3";
}
0
дададзена

Калі Winforms Вы можаце выкарыстоўваць нешта падобнае

    private void Form1_Load(object sender, EventArgs e)
    {
            comboBox1.Items.Add(1);
            comboBox1.Items.Add(2);
            comboBox1.Items.Add(3);
            comboBox2.Visible = false;
    }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (comboBox1.SelectedItem.ToString() == "3")
        {
            comboBox2.Visible = true;
        }
        else
        {
            comboBox2.Visible = false;
        }
    }

Спадзяюся, што гэта дапамагае.,

0
дададзена

Калі Winforms Вы можаце выкарыстоўваць нешта падобнае

    private void Form1_Load(object sender, EventArgs e)
    {
            comboBox1.Items.Add(1);
            comboBox1.Items.Add(2);
            comboBox1.Items.Add(3);
            comboBox2.Visible = false;
    }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (comboBox1.SelectedItem.ToString() == "3")
        {
            comboBox2.Visible = true;
        }
        else
        {
            comboBox2.Visible = false;
        }
    }

Спадзяюся, што гэта дапамагае.,

0
дададзена