Как я могу назначить ColorDialog.Color для другой формы в C#?
Я пытаюсь присвоить значение цвета, возвращаемое из ColorDialog
в одной форме в другую форму.
Форма 1 состоит из 2 кнопок: "Разместить заказ" (создает новую форму с набором элементов управления) и "Выбрать цвет" (позволяет изменить цвет формы "Разместить заказ"). Таким образом, вы не можете одновременно разместить заказ и выбрать цвет.
Поэтому я как-то должен ссылаться на BackColor
свойство формы Разместить заказ на форму, которая имеет две кнопки, так что ColorDialog.Color
может быть назначен на форму заказа.
Код Form 1:
private void SelectColor_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
string color = Convert.ToString(colorDialog1.Color);
MessageBox.Show(color);
this.BackColor = colorDialog1.Color; // BackColor is only accessible for this form
}
}
2 ответа
То, как вы делаете это, вам нужно будет поддерживать переменную для хранения цвета. Сделай это так:
//Declare this private variable to hold the color selected by the user
private System.Drawing.Color selectedcolor;
private void SelectColor_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
selectedcolor = colorDialog1.Color; // BackColor stored in variable
}
}
затем в коде, где вы запускаете вашу новую форму (кнопка "Разместить заказ"), поместите это:
private void PlaceOrder_Click(object sender, EventArgs e)
{
//I am assuming PlaceOrderForm is the name of the class of your other form
PlaceOrderForm frm = new PlaceOrderForm();
//Initialize other properties and events,etc.
//Then make its background color as selected by user
if(selectedcolor != null) frm.BackColor = selectedcolor;
}
if(colorDialog1.ShowDialog() != DialogResult.OK) {return;}
form2 f = new form2();
f.BackColor = colorDialog1.Color;
f.Show();