Asyraf Patt Ответов: 1

C# winform :1 кнопка и 3 слайд-панели


Просто интересно, можно ли сделать панель из 3 слайдов с одной кнопкой ?

Что я уже пробовал:

ниже приведен мой код, где мне нужно нажать 1 кнопку, чтобы показать 1 панель, так что.. если у меня есть 3 панели.. то мне нужно 3 кнопки. Все, что мне нужно, это то, что я просто хочу 1 кнопку для создания слайдера панели (3 панели)


private void button_1(object sender, EventArgs e)
{
    var point = new Point(97,76);
    this.panel2.Location = point;

    this.panel2.Location = new Point(
     this.panel2.Location.X,
     this.panel2.Location.Y);


}

private void button_2(object sender, EventArgs e)
{

    var point2 = new Point(97,76);
    this.panel3.Location = point2;

    this.panel3.Location = new Point(
     this.panel3.Location.X,
     this.panel3.Location.Y);

}

private void button_3(object sender, EventArgs e)
{

    //DEfault
    var point2 = new Point(307, 75);
    this.panel2.Location = point2;

    this.panel2.Location = new Point(
     this.panel2.Location.X,
     this.panel2.Location.Y);


    var point = new Point(97,414);
    this.panel3.Location = point;

    this.panel3.Location = new Point(
     this.panel3.Location.X,
     this.panel3.Location.Y);


}

Graeme_Grant

Используйте систему состояний для управления тем, что происходит при нажатии кнопки.

Graeme_Grant

Я не понимаю из вашего кода, что вы делаете.

Пожалуйста, нажмите на виджет" улучшить вопрос " и объясните, что вы пытаетесь сделать...

Karthik_Mahalingam

добавьте эти коды в одно событие нажатия кнопки.

1 Ответов

Рейтинг:
1

BillWoodruff

Есть много способов сделать это. Вот один:

Обрабатывать все позиционирование панели в Click EventHandler одной кнопки:

private void YourForm_Load(object sender, EventArgs e)
    {
        Panels = new List<Panel> {panel1, panel2, panel3};
    }

    private List<Panel> Panels;

    private int currentPanelIndex = 0;
    private Panel currentPanel;

    private void PanelChangeButton_Click(object sender, EventArgs e)
    {
        currentPanelIndex =
            (currentPanelIndex == 2)
                ? 0
                : ++currentPanelIndex;

        currentPanel = Panels[currentPanelIndex];

        currentPanel.BringToFront();

        switch (currentPanel.Name)
        {
            case "panel1":
                // your positioning code goes here
                break;

            case "panel2":
                break;

            case "panel3":
                break;
        }
    }
}
Мы отслеживаем текущую панель и с каждым щелчком на кнопке PanelChangeButton устанавливаем индекс, указывающий на следующую панель в серии. Если мы находимся на последней панели в серии, мы сбрасываем индекс, чтобы указать на первую панель.

В операторах switch/case вы можете написать свой код, чтобы делать все, что угодно, основываясь на (новой) текущей панели.

к вашему сведению: этот код является избыточным:
var point = new Point(97,76);
this.panel2.Location = point;

this.panel2.Location = new Point(
 this.panel2.Location.X,
 this.panel2.Location.Y);
Его можно заменить следующим:
this.panel2.Location = new Point(97,76);