В формах Xamarin, как вы можете сделать выбранную опцию в сборщике невидимой в других сборщиках? - PullRequest
0 голосов
/ 21 мая 2019

enter image description here У меня есть 7 подобных сборщиков с одинаковыми опциями.Прямо сейчас пользователь может выбрать ту же опцию из picker1, что она уже была выбрана в picker2.Я хочу, чтобы пользователь, выбранный в средстве выбора, не отображался в средстве выбора 2.

Я гуглил, но никто, похоже, не задавал этот вопрос.

void drainxy1()
{
drainlocationPicker1.Items.Add("1");
drainlocationPicker1.Items.Add("2");
drainlocationPicker1.Items.Add("3");
drainlocationPicker1.Items.Add("4");       
}
void drainxy2()
{
drainlocationPicker2.Items.Add("1");
drainlocationPicker2.Items.Add("2");
drainlocationPicker2.Items.Add("3");
drainlocationPicker2.Items.Add("4");       
}
void drainxy3()
{
drainlocationPicker3.Items.Add("1");
drainlocationPicker3.Items.Add("2");
drainlocationPicker3.Items.Add("3");
drainlocationPicker3.Items.Add("4");       
}
void drainxy4()
{
drainlocationPicker4.Items.Add("1");
drainlocationPicker4.Items.Add("2");
drainlocationPicker4.Items.Add("3");
drainlocationPicker4.Items.Add("4");       
}
<Picker x:Name="drainlocationPicker1" Title="Drain Location" />
<Picker x:Name="drainlocationPicker2" Title="Drain Location" />
<Picker x:Name="drainlocationPicker3" Title="Drain Location" />
<Picker x:Name="drainlocationPicker4" Title="Drain Location" />
/*
Picker1= select from 1,2,3,4
user selects = 2
picker2= select from 1,3,4
user selects = 3
Picker3= select from 1,4
user selects = 1
picker4= select from 4
user selects = 4 */


void drain1Handle_SelectedIndexChanged(object sender, System.EventArgs e)
{           
drainlocationPicker2.Items.RemoveAt(drainlocationPicker1.SelectedIndex);            
drainlocationPicker3.Items.RemoveAt(drainlocationPicker1.SelectedIndex);              `   drainlocationPicker4.Items.RemoveAt(drainlocationPicker1.SelectedIndex);                
}

xamlfile

<Label x:Name="drain3Label" Text="Drain 3: " Grid.Column="0" 
HorizontalTextAlignment="Center" VerticalTextAlignment="Center" />
<Picker x:Name="drainlocationPicker3" Title="Drain Location" Grid.Column="1"
SelectedIndexChanged="drain3Handle_SelectedIndexChanged"/> 

1 Ответ

1 голос
/ 22 мая 2019

Я создаю простую демонстрацию об этом. Здесь работает GIF.

enter image description here

Вы можете добиться с помощью следующего кода. Я создаю список, который включает в себя все элементы. Затем добейтесь SelectedIndexChanged, как сказал Джейсон. Примечание: Далее вам нужно самим оценить различные действия пользователя.

  public partial class MainPage : ContentPage
{
    List<string> list;
    public MainPage()
    {
        InitializeComponent();
        list = new List<string>();
        list.Add("1");
        list.Add("2");
        list.Add("3");
        list.Add("4");
        drainxy1();
        drainxy2();
        drainxy3();
        drainxy4();


        drainlocationPicker1.SelectedIndexChanged += DrainlocationPicker1_SelectedIndexChanged;
        drainlocationPicker2.SelectedIndexChanged += DrainlocationPicker2_SelectedIndexChanged;
        drainlocationPicker3.SelectedIndexChanged += DrainlocationPicker3_SelectedIndexChanged;
        drainlocationPicker4.SelectedIndexChanged += DrainlocationPicker4_SelectedIndexChanged;



    }

    private void DrainlocationPicker4_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    private void DrainlocationPicker3_SelectedIndexChanged(object sender, EventArgs e)
    {

        drainlocationPicker4.Items.RemoveAt(drainlocationPicker3.SelectedIndex);
    }

    private void DrainlocationPicker2_SelectedIndexChanged(object sender, EventArgs e)
    {

        drainlocationPicker3.Items.RemoveAt(drainlocationPicker2.SelectedIndex);
        drainlocationPicker4.Items.RemoveAt(drainlocationPicker2.SelectedIndex);
    }

    private void DrainlocationPicker1_SelectedIndexChanged(object sender, EventArgs e)
    {


        drainlocationPicker2.Items.RemoveAt(drainlocationPicker1.SelectedIndex);
        drainlocationPicker3.Items.RemoveAt(drainlocationPicker1.SelectedIndex);
        drainlocationPicker4.Items.RemoveAt(drainlocationPicker1.SelectedIndex);

    }

    void drainxy1()
    {
        foreach (var item in list)
        {
            drainlocationPicker1.Items.Add(item);
        }
    }
    void drainxy2()
    {

        foreach (var item in list)
        {
            drainlocationPicker2.Items.Add(item);
        }
    }
    void drainxy3()
    {

        foreach (var item in list)
        {
            drainlocationPicker3.Items.Add(item);
        }
    }
    void drainxy4()
    {

        foreach (var item in list)
        {
            drainlocationPicker4.Items.Add(item);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...