2009-10-31 5 views
0

Fondamentalement, j'ai une fenêtre de paramètres, et lorsque vous cliquez sur "OK", il est supposé appliquer des paramètres au formulaire principal (par exemple, définir la police d'un contrôle, etc), et puis fermez.Modification de la propriété d'un contrôle sur un autre formulaire

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

J'ai essayé, mais il applique uniquement les paramètres à cette instance, et vous pouvez le voir si vous faites frm.Show();

J'essaye de faire en sorte que le formulaire déjà ouvert ait changé ses propriétés de contrôle.

Répondre

0

Ce que vous essayez de faire ne fonctionne pas parce que vous créez un NOUVEAU instance de votre formulaire principal et la mise à jour que, plutôt que la première instance. Il est possible de mettre à jour le formulaire principal en gardant une référence à celui-ci dans votre formulaire de configuration ... mais ...

... il semble que vous vous approchez de ce mauvais sens. Ne pas rendre le formulaire de paramètres dépendant du formulaire principal. Créez plutôt le formulaire de configuration à partir de la boîte de dialogue principale.

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; 
    } 
} 

Dans votre principale forme (je suppose une sorte de bouton ou un menu clic)

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

Cela a fonctionné après avoir fait le tour (a dû ajouter This.Dialogresult = DialogResult.Ok;) - Apprenez quelque chose de nouveau tous les jours :) tysm – Mike

+1

Vous pouvez définir cela dans le concepteur en changeant la propriété DialogResult de votre bouton OK pour être 'OK' et le DialogResult de votre bouton d'annulation doit être 'Annuler'. –

0

Appliquez la modification de propriété au formulaire qui existe déjà et qui est déjà affiché au lieu de créer un nouveau formulaire et de modifier celui-ci.

+0

il ne me laisse pas accéder aux propriétés de la forme déjà existante:/À moins que je fais quelque chose de mal? – Mike

0

Dans ce code, vous créez une nouvelle instance du fichier frmmain. Toute modification apportée à ce nouvel objet se produira dans le nouvel objet, pas celui que vous voulez réellement changer .:

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

Qu'est-ce que vous cherchez est un moyen de faire appel à la classe frmMain déjà et existant changer la propriété de cela.

Modifier, par exemple:

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

si vous voulez changer par exemple le texte d'une zone de texte, vous devez utiliser Préparez-vous funcs . dans form2 faire un ensemble;

public string code { set { textBox1.Text = value; } } 

et dans la première forme l'utiliser comme ceci:

  new Form2() {code="Value that you wanna show on the other side" }.Show(); 
Questions connexes