[Winform]另类的透明ComboBox
我们在做窗体美化时,不希望控件遮挡窗体背景不是所有winform控件都支持透明背景,比如TextBox,ComboBox,ListBox等网上有方法实现TextBox透明,但ComboBox透明貌似没有教程
下面我们来用组合控件来实现透明ComboBox功能
添加两个Button,FlatStyle改为Flat,BackColor改为Transparent
修改Margin属性为0,使两个按钮拼在一起,将第二个按钮文字改为▽
添加一个ContextMenuStrip用来显示下拉框
添加项的方法如下:
contextMenuStrip1.Items.Add(new ToolStripMenuItem("a"));
contextMenuStrip1.Items.Add(new ToolStripMenuItem("b"));
contextMenuStrip1.Items.Add(new ToolStripMenuItem("c"));
contextMenuStrip1.Items.Add(new ToolStripMenuItem("d"));
两个按钮同时添加Click事件
private void button2_Click(object sender, EventArgs e)
{
contextMenuStrip1.Show(button1, new Point(0, button1.Size.Height));
}
在添加完项目之后添加事件
private void Form1_Load(object sender, EventArgs e)
{
contextMenuStrip1.Items.Add(new ToolStripMenuItem("a"));
contextMenuStrip1.Items.Add(new ToolStripMenuItem("b"));
contextMenuStrip1.Items.Add(new ToolStripMenuItem("c"));
contextMenuStrip1.Items.Add(new ToolStripMenuItem("d"));
//显示文本可用Text属性,隐藏内容可用Tag属性
foreach (ToolStripMenuItem item in contextMenuStrip1.Items)
{
item.Click += new EventHandler(AddItem);
}
}
private void AddItem(object sender, EventArgs e)
{
ToolStripMenuItem t = sender as ToolStripMenuItem;
button1.Text = t.Text;
button1.Tag = t.Tag;
}
就可以实现ComboBox功能,并且不遮挡窗体背景
这个模式能够看出来是contextMenuStrip,显示出来的部分有个区分线(contextMenuStrip的前端可以设定Icon的位置)
页:
[1]