Muhammad Iqbal Suzetta Ответов: 2

как изменить цвет ярлыка во время выполнения


я пытаюсь сделать приложение MDI.я добавляю метку во время выполнения и хочу изменить цвет текстовой метки с помощью цветового диалога. я пытаюсь использовать следующий код

private void colorToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form actif = this.ActiveMdiChild;
            Label label = (Label)actif.ActiveControl;
            Label lbl = new Label();
            
            ColorDialog colordialog1 = new ColorDialog();
            if (colordialog1.ShowDialog()!=System.Windows.Forms.DialogResult.Cancel)
            {
                lbl.ForeColor = colordialog1.Color; //error
            }      

        }

как я могу изменить свойства метки во время выполнения ?

[no name]

Даже если вы не получили ту ошибку, которую получаете, вы создаете новую метку, устанавливаете forecolor, а затем отпускаете ее за пределы области действия, не делая с ней ничего другого. Что это за ошибка, которую вы получаете?

Abhishek Sivasubramanian

Вы получаете какую-то ошибку в той строке, которую вы выделили, или ваша проблема заключается в том, что вы не видите, как применяется forecolor ?

Если это произойдет позже, вам необходимо поместить динамически сгенерированную метку в коллекцию элементов управления формы или панель. Тогда только вы можете это увидеть.

[no name]

Попробуйте решить ее шаг за шагом.
Вы уверены, что спрашиваете правильное свойство у ColorDialog?
Может быть, и нет, поэтому следующим шагом будет _not_ присвоить цвет, возвращенный из dlg, назначить фиксированное значение, которое вы должны распознать. Если ваша этикетка все еще не показывает этот фиксированный цвет....тогда я вышел из строя ;)

уупс просто посмотреть Решение 1 ;)

Emre Ataseven

Это не похоже на хороший способ что бы вы ни пытались сделать

2 Ответов

Рейтинг:
17

OriginalGriff

Вы не получите там ошибку с точным кодом, который вы показываете - он ничего не сделает, но вы также не получите ошибку.
Вы почти наверняка получите ошибку, если попытаетесь установить свойство ForeColor label хотя, как очень явно сказано на странице MSDN:

In order to receive a valid value from this property, the object that calls it must either contain or be contained in the control it is calling. If one form tries to call another form's ActiveControl properties, it will receive an undefined value. In this case, you need to define your own communication mechanism between the forms to pass this data.


Поскольку здесь это определенно не так, вы получите некоторые странные ошибки...

Не делайте таких вещей: это не так уж трудно сделать правильно.
Видеть здесь: Передача информации между двумя формами, Часть 1: Родитель-Ребенок[^] и реализовать "метод свойства"


Рейтинг:
1

Member 14835179

Этикетка 1.ForeColor = Система.Рисование.Цвет.DodgerBlue;
Этикетка 1.ForeColor = Система.Рисование.Цвет.красный;

и т.д...


Dave Kreskowiak

Это не ответ на вопрос 6-летней давности. Вы не смогли понять проблему с кодом операции.