Как я могу назначить ColorDialog.Color для другой формы в C #? - PullRequest
0 голосов
/ 09 февраля 2011

Я пытаюсь присвоить значение цвета, возвращаемое из ColorDialog в одной форме, другой форме.

Форма 1 состоит из 2 кнопок: «Разместить заказ» (создает новую форму с набором элементов управления) и «Выбрать цвет» (позволяет изменить цвет формы размещения заказа). Таким образом, вы не можете одновременно разместить заказ и выбрать цвет.

Таким образом, я как-то должен ссылаться на свойство BackColor формы «Разместить заказ», чтобы форма, имеющая две кнопки, позволяла присваивать ColorDialog.Color форме заказа.

Код формы 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 ]

1 голос
/ 09 февраля 2011

То, как вы делаете это, вам нужно будет поддерживать переменную для хранения цвета.Сделайте это так:

//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;
}
0 голосов
/ 09 февраля 2011
if(colorDialog1.ShowDialog() != DialogResult.OK) {return;}

form2 f = new form2();
f.BackColor = colorDialog1.Color;
f.Show();
...