2009-11-27 4 views
0

Dans mon formulaire, j'ai une application pour modifier la couleur de fond du formulaire, lorsque la sélection de l'élément de menu a changé, sur quel événement le code doit écrire? Aidez-moi, s'il vous plaît.comment changer la couleur d'arrière-plan du formulaire lorsque l'image est sélectionnée de menuitems

+0

Vous obtenez des réponses liées à WebForms ou HTML et JavaScript. De vos tags, je suppose que c'est un projet WinForm: vous pourriez vouloir clarifier. meilleur, – BillW

Répondre

0

Sur un formulaire WinForms, j'ai créé un ToolStripMenu avec 1 ToolStripMenuItem appelé ToolsStripMenuItemColors. Dans son DropDownItems j'ai ajouté 3 autres ToolStripMenuItems avec les propriétés de texte de "Red", "Green", "Blue".

Je me connecte à leurs événements .Click. Dans le gestionnaire d'événements, je détermine quel élément a été cliqué et définit sa propriété Clicked sur true. Sur les autres, je l'ai mis à faux. Ces deux étapes sont uniquement à des fins d'affichage, pas totalement nécessaire. J'utilise ensuite la propriété .Text de l'élément sélectionné dans une instruction case pour déterminer la couleur à laquelle définir BackColor du formulaire. Ce n'est pas la façon la plus élégante de comprendre cela, mais cela devrait vous aider à démarrer. Une meilleure façon possible serait de stocker la couleur dans la propriété Tag de ToolStripMenuItem et d'éviter une instruction de cas basée sur des chaînes.

Il existe également une propriété CheckOnClick et un événement CheckedChanged disponibles, mais je pensais que gérer l'événement Click serait préférable car vous ne souhaitiez qu'une sélection à la fois.

using System; 
using System.Drawing; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      foreach (ToolStripMenuItem item in toolStripMenuItemColors.DropDownItems) 
      { 
       item.Click += ItemClick; 
      } 
     } 

     private void ItemClick(object sender, EventArgs e) 
     { 
      foreach (ToolStripMenuItem item in toolStripMenuItemColors.DropDownItems) 
      { 
       if (item.Equals(sender)) 
       { 
        item.Checked = true; 
       } 
       else 
       { 
        item.Checked = false; 
       } 
      } 

      string color =((ToolStripMenuItem)sender).Text; 
      Color newColor = this.BackColor; 

      switch (color) 
      { 
       case "Red": 
        newColor = Color.Red; 
        break; 
       case "Blue": 
        newColor = Color.Blue; 
        break; 
       case "Green": 
        newColor = Color.Green; 
        break; 
       default: 
        break; 
      } 
      BackColor = newColor; 
     } 
    } 
} 
Questions connexes