KManishS Ответов: 1

Изменить цвет кнопки в кнопке click C#


Здравствуйте Вдохновители,

Я создаю онлайн-тестовое приложение, в котором генерирую около 100 кнопок. во время выполнения При загрузке формы.
private void addQuestion_Reviewbutton()
        {
            for (int i = 1; i <= clsGlobalVars.gnTotalQuestion; i++)
            {
                Button button = new Button();
                button.Location = new Point(160, 30 * i + 10);
                button.Click += new EventHandler(ButtonClickOneEvent);                
                button.Tag = i;                
                button.Name = "Question" + i;
                button.Text = i.ToString();
                button.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.button));
                button.BackgroundImageLayout = ImageLayout.Stretch;//.Zoom;
                button.FlatAppearance.BorderSize = 0;
                button.Size = new System.Drawing.Size(47, 41);
                button.BackColor = Color.Transparent;
                button.FlatStyle = FlatStyle.Flat;
                button.Font = new System.Drawing.Font("Segoe UI Semibold", 12);
                button.ForeColor = Color.White;
                button.Cursor = Cursors.Hand;
                flowLayoutPanel1.Controls.Add(button);
                //flowLayoutPanel1.ScrollControlIntoView(button);
            }
        }

и по этому щелчку кнопки я меняю цвет фона
void ButtonClickOneEvent(object sender, EventArgs e)
        {
            Button button = sender as Button;
            //button.BackColor = Color.Yellow;
            button.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.button_Orange));
            lblQuestionNo.Text = ((int)button.Tag).ToString()+".";
            btnNext.Focus();
            
        }


у меня есть кнопка на форме под названием "далее". Теперь моя проблема заключается в том, что если я курну в вопросе "1". и я нажимаю кнопку Далее, я хочу изменить фоновое изображение кнопки, текст которой является "2".

Нужно ваше ценное руководство, чтобы решить эту проблему.


Спасибо...

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

Я не в своем уме, не знаю, как получить доступ к сгенерированным во время выполнения кнопкам из другого элемента управления кнопками

VR Karthikeyan

можете ли вы поделиться скриншотом своей формы?

KManishS

https://photos.google.com/share/AF1QipOQ-xh3hBypJ4XZf-rmJIcoCCbiKXoawQQTuIVn2_kNQU5x0RNsh1yjMWomCjKXug?key=ZFFwcFZYVURMQks1MEhJV3pQWnp0UXFHc1NYOENR

1 Ответов

Рейтинг:
8

Mehedi Shams

Привет Маниш,

В основном вам нужны следующие два шага:

1) Следите за индексом последней кнопки.
2) На "далее" нажмите кнопку получить следующую кнопку последней кнопки и обработайте ее (с фоновым изображением или чем-то еще).

1) отслеживать индекс последней кнопки легко, так как у них есть такие имена, как Question1, Question2... и т. д.

Вам понадобится глобальная переменная, чтобы отслеживать это:

int LastButtonIndex;
Затем измените ButtonClickOneEvent следующим образом. Он просто берет подстроку, чтобы получить индекс кнопки.
void ButtonClickOneEvent(object sender, EventArgs e)
{
    Button button = sender as Button;
    button.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.button_Orange));
    lblQuestionNo.Text = ((int)button.Tag).ToString() + ".";
    LastButtonIndex = Convert.ToInt16(button.Name.Substring(8)); // Added this line
    btnNext.Focus();
}
2) На "далее" нажмите кнопку получить следующий и обработайте по мере необходимости:
private void btnNext_Click(object sender, EventArgs e)
{
    //if (LastButtonIndex + 1 > clsGlobalVars.gnTotalQuestion) return;    // Checking if it reached the last button.
    Control[] NextQuestion;
    string ButtonName = "Question" + (LastButtonIndex + 1);
    NextQuestion = Controls.Find(ButtonName, false);

    if (NextQuestion.GetUpperBound(0) != -1)    // Checking if the button was found.
        (NextQuestion[0] as Button).BackColor = Color.Red;  // Change this line according to your need.
}


KManishS

(NextQuestion[0] as Button).BackColor = Цвет.Красный; // измените эту строку в соответствии с вашими потребностями.

ошибка в приведенной выше строке, индекс находился за пределами массива

Mehedi Shams

Извините Маниш, пожалуйста, проверьте обновленный код для события btnNext_click (). Он проверяет, была ли кнопка найдена или нет.

Работал ли код вообще для ваших кнопок или это произошло в определенный момент (например, при последнем нажатии кнопки)? Я проверил код, и он работал нормально. Так что немного запутался.