在我的表单中,我有应用程序来更改表单的背景颜色,当菜单项选择改变时,代码需要写入哪个事件?请帮帮我。
答案 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;
}
}
}