изменение класса CSS для управления отправителем объекта - PullRequest
0 голосов
/ 28 февраля 2012

Я создаю книгу в C # .net (с использованием Visual Studio)

Книга построена из текстовой части и части вопроса.

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

Я создаю текст с кликабельностью с помощью LINKBUTTON, я дал ссылку на класс CssStyle кнопки, и после того, как пользователь щелкнул слово, я хочу изменитькласс для этой ссылки на другой класс.

это код, который я использую для создания кнопки ссылок:

  public void createQusetion(Panel lefttext, Panel question, string text, string          
   questionText, string answer)
{

    string[] Qbuttonstext = text.Split(' ');
    _numberWords = Qbuttonstext.Length;
    for (int i = 0; i < _numberWords; i++)
    {
        LinkButton answerButton = new LinkButton();
        if (Qbuttonstext[i] == answer)
        {
            answerButton.ID = "answer" + i;

        }
        else
        {
            answerButton.ID = "word" + i.ToString();
        }
        answerButton.Text = Qbuttonstext[i].ToString() + " ";
        answerButton.CssClass = "textbuttonB4";

        answerButton.Click += new EventHandler(checkAnswer);

        lefttext.Controls.Add(answerButton);
    }


}

и для проверки вопроса:

 private void checkAnswer(object sender, System.EventArgs e)
{
    for (int i = 0; i < _numberWords; i++)
    {
        if (((Control)sender).ID.ToString() != null)
        {
            if (((Control)sender).ID.ToString() == "answer" + i.ToString())
            {
                ((Control)sender).CssClass = "textbuttonRight";

            }
            else
            {
                ((Control)sender).CssClass = "textbuttonwrong";

            }
        }
    }
}

VS2010 дает мне ошибку для: ((Control) отправителя) .CssClass.

что такое правильный путь?

1 Ответ

1 голос
/ 28 февраля 2012

Таким способом вы можете осуществлять независимое от типа управление.Он будет работать для всех элементов управления, имеющих свойства Id и CssClass.

    private void checkAnswer(object sender, System.EventArgs e)
    {
        var cssClass = sender.GetType().GetProperty("CssClass");
        var id = sender.GetType().GetProperty("ID").GetValue(sender, null);
        for (int i = 0; i < _numberWords; i++)
        {
            if (id!=null)
            {
                if (id.ToString() == "answer" + i.ToString())
                {
                    cssClass.SetValue(sender, "textbuttonRight", null);
                }
                else
                {
                    cssClass.SetValue(sender, "textbuttonRight", null);
                }
            }
        }
    }
...