如何从菜单项中选择图像时更改表单的背景颜色

时间:2009-11-27 06:12:41

标签: c# .net

在我的表单中,我有应用程序来更改表单的背景颜色,当菜单项选择改变时,代码需要写入哪个事件?请帮帮我。

2 个答案:

答案 0 :(得分:0)

我认为你在谈论灯箱效应 像下面的URL中显示的东西:

http://www.huddletogether.com/projects/lightbox2/

http://en.wikipedia.org/wiki/Lightbox_%28JavaScript%29

如果是,我建议你使用现成的灯箱js。 我可以提供更多信息。如果符合你的要求,那么直到这个。

答案 1 :(得分:0)

在WinForms表单上,我设置了一个ToolStripMenu,其中包含一个名为ToolsStripMenuItemColors的ToolStripMenuItem。在其DropDownItems中,我添加了3个ToolStripMenuItems,文本属性为“Red”,“Green”,“Blue”。

我挂钩了他们的.Click事件。在事件处理程序中,我确定单击了哪个项目并将其Clicked属性设置为true。在其他人,我把它设置为假。这两个步骤仅用于显示目的,并非完全必要。然后,我在case语句中使用所选项的.Text属性来确定将Form的BackColor设置为哪种颜色。这不是最优雅的解决方法,但它应该让你开始。一种可能的更好的方法是将Color存储在ToolStripMenuItem的Tag属性中,并避免基于字符串的case语句。

还有一个CheckOnClick属性和一个CheckedChanged事件可供使用,但我认为处理Click事件会更好,因为你一次只需要检查一个选择。

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