Как я могу назначить 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();
Другие вопросы по тегам