2016-12-06 3 views
0

Я хочу, чтобы пользователи могли выбрать цвет фона для моей программы, используя ColorDialog, но поскольку текст моего ярлыка черный, я хочу, чтобы пользователь не смог выбрать черный из диалогового окна цвета так что цвет не будет перекрывать мой цвет текста ярлыка. есть ли способ сделать это? Я также думал о воспитывающим сообщение об ошибке, если пользователь выбирает черный, как показано ниже, но после того, как диалоговое окно выбора цвета появляется снова цвет я выбрал не становится BackColor моей формыотключить цвет из диалогового окна цвета

if (color.ShowDialog() == DialogResult.OK) 
{ 
    if(color.Color == Color.Black) 
    { 
     MessageBox.Show("Color cannot be black", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); 
     color.ShowDialog(); 
    } 
    else 
    { 
     BackColor = color.Color; 
     backColor = color.Color; 
    } 
} 
+0

Звучит как 'while', пока не будет выбран правильный цвет. – Sinatr

+2

Рассматривали ли вы переход на цвет текста яркой метки, когда выбран темный цвет фона, а не просто сообщать пользователям, что их выбор неправильный? –

+1

Позвольте пользователю выбрать форму «BackColor» и «ForeColor» для формы. Таким образом, они могут выбрать, какую комбинацию цвета они хотят. –

ответ

0

Попробуйте использовать в то время как вместо от того, если при проверке цвета:

if (color.ShowDialog() == DialogResult.OK) 
{ 
    while(color.Color == Color.Black) 
    { 
     MessageBox.Show("Color cannot be black", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); 
     color.ShowDialog(); 
    } 
    BackColor = color.Color; 
    backColor = color.Color; 
} 

Таким образом, если вы не выбираете цвет, который не черный, то появится сообщение об ошибке и открыть ColorDialog снова. Что касается того, почему цвет цвета не изменился для вас после того, как вы открыли диалоговое окно, это связано с тем, что вы меняете цвет фона только в предложении else, поэтому, если вы сначала выбрали черный, BackColor не изменится. Еще один способ решить вашу проблему - изменить цвет ваших ярлыков на белый, если выбранный цвет черный (не забудьте изменить текст этикетки обратно на черный, когда выбран другой цвет).

+0

Благодарю вас, ребята. Цикл while работал для меня. Я не могу изменить цвет ярлыка ярлыка, у меня есть много форм и много раз говорил бы –

+0

@LimJunWei 'ForeColor' и' BackColor' являются окружающими свойствами, и если вы измените их в базовой форме, они будут меняться для всех элементов управления. –

+1

Вы должны, вероятно, проверить, чтобы пользователь нажал кнопку «Отмена» во втором вызове ShowDialog. – LarsTech

Смежные вопросы