Изменение свойства элемента управления в другой форме - PullRequest
0 голосов
/ 31 октября 2009

Обычно у меня есть окно настроек, и когда вы нажимаете «ОК», предполагается применить настройки к основной форме (например, установить шрифт элемента управления и т. Д.), А затем закрыть.

frmmain frm = new frmmain();
frm.OLVAltBackColor = Color.Aquamarine ;

Я пытался это сделать, но он применяет настройки только к этому экземпляру, и вы можете увидеть его, если выполните frm.Show ();

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

Ответы [ 3 ]

0 голосов
/ 31 октября 2009

В этом коде вы создаете новый экземпляр домена. Любые изменения, которые вы вносите в этот новый объект, будут происходить в новом объекте, а не в том, который вы на самом деле хотите изменить .:

frmmain frm = new frmmain(); //Creating a new object isn't the way.
frm.OLVAltBackColor = Color.Aquamarine ;

То, что вы ищете, - это способ вызова уже существующего класса frmmain и изменения его свойства.

Изменить, например:

using System;
class Statmethod
{
  //A class method declared
  static void show()
  {
    int x = 100;
    int y = 200;
    Console.WriteLine(x);
    Console.WriteLine(y);
  }

  public static void Main()
  {
    // Class method called without creating an object of the class
    Statmethod.show();
  }
}
0 голосов
/ 31 октября 2009

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

... звучит так, как будто вы приближаетесь к этому с неправильного направления.

Не делайте форму настроек зависимой от основной формы. Вместо этого создайте форму настроек в главном диалоговом окне.

class SettingsForm : Form
{
   // You need to ensure that this color is updated before the form exits
   // either make it return the value straight from a control or set it 
   // as the control is updated
   public Color OLVAltBackColor
   {
       get;
       private set;
   }
}

В вашей основной форме (Я предполагаю, что какая-то кнопка или щелчок меню)

private void ShowSettingsClicked(object sender, EventArgs args)
{
   using (SettingsForm settings = new SettingsForm())
   {
       // Using 'this' in the ShowDialog parents the settings dialog to the main form
       if (settings.ShowDialog(this) == DialogResult.OK)
       {
           // update settings in the main form
           this.OLVAltBackColor = settings.OLVAltBackColor;
       }
   }

}
0 голосов
/ 31 октября 2009

Примените изменение свойства к форме, которая уже существует и уже отображается вместо создания новой формы и ее изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...