C#winfrom 新建winfrom From1窗体,在窗体中添加splitContainer1控件控件上左边制作一个包含父级菜单名称和子级功能选项的功能选项栏,并在顶部增加一个功能搜索栏根据输入的子级功能名称高亮显示出来对应的子级功能,在右边添加 tabControl控件,双击子级调用对应的其他窗体填充到tabControl里的TabPages界面(同时显示出子级功能名称)TabPages根据打开的子级功能自动新增一个将子级调用的其他from窗体填充到里面,同时TabPages名称右边包含关闭(X)功能,点击之后关闭调用的from窗体 实现代码
时间: 2024-03-14 15:47:43 浏览: 67
以下是一个简单的实现过程,仅供参考:
1. 添加控件
首先在Form1窗体中添加SplitContainer控件和TabControl控件,以及一个TextBox控件和一个Button控件作为功能搜索栏。在SplitContainer控件的左侧添加Panel控件,用于实现功能选项栏。
2. 实现功能选项栏
在Panel控件中添加Label控件作为父级菜单名称,以及Button控件作为子级功能选项。在Button控件的Click事件中,双击调用对应的其他窗体,将其填充到TabControl控件的TabPages中,并显示出子级功能名称。
3. 实现功能搜索栏
在TextBox控件的TextChanged事件中,根据输入的子级功能名称高亮显示出对应的子级功能。
4. 实现TabPages功能
在TabControl控件的SelectedIndexChanged事件中,根据选择的TabPages名称,自动新增一个将子级调用的其他Form窗体填充到里面,并在TabPages名称右侧包含关闭(X)功能,点击之后关闭调用的Form窗体。
以下是代码实现:
```csharp
public partial class Form1 : Form
{
private List<Button> buttons = new List<Button>(); // 保存所有子级功能选项按钮的列表
private List<Form> forms = new List<Form>(); // 保存所有打开的Form窗体的列表
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// 添加父级菜单名称
Label label = new Label();
label.Text = "父级菜单名称";
label.Dock = DockStyle.Top;
panel1.Controls.Add(label);
// 添加子级功能选项按钮
for (int i = 0; i < 10; i++)
{
Button button = new Button();
button.Text = "子级功能" + (i + 1);
button.Dock = DockStyle.Top;
button.Click += Button_Click;
panel1.Controls.Add(button);
buttons.Add(button);
}
}
private void Button_Click(object sender, EventArgs e)
{
// 双击调用对应的Form窗体,并将其填充到TabControl控件的TabPages中
Button button = sender as Button;
Form form = new Form();
form.Text = button.Text;
form.TopLevel = false;
form.FormBorderStyle = FormBorderStyle.None;
form.Dock = DockStyle.Fill;
tabControl1.TabPages.Add(button.Text);
tabControl1.TabPages[tabControl1.TabPages.Count - 1].Controls.Add(form);
form.Show();
forms.Add(form);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
// 根据输入的子级功能名称高亮显示出对应的子级功能
foreach (Button button in buttons)
{
if (button.Text.Contains(textBox1.Text))
{
button.BackColor = Color.Yellow;
}
else
{
button.BackColor = Color.White;
}
}
}
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
// 根据选择的TabPages名称,自动新增一个将子级调用的Form窗体填充到里面,并在TabPages名称右侧包含关闭(X)功能,点击之后关闭调用的Form窗体
string tabPageName = tabControl1.SelectedTab.Text;
bool formExist = false;
foreach (Form form in forms)
{
if (form.Text == tabPageName)
{
formExist = true;
break;
}
}
if (!formExist)
{
Form form = new Form();
form.Text = tabPageName;
form.TopLevel = false;
form.FormBorderStyle = FormBorderStyle.None;
form.Dock = DockStyle.Fill;
tabControl1.TabPages[tabControl1.SelectedIndex].Controls.Add(form);
form.Show();
forms.Add(form);
// 在TabPages名称右侧包含关闭(X)功能,点击之后关闭调用的Form窗体
Label label = new Label();
label.Text = " X";
label.Font = new Font("Microsoft Sans Serif", 8.25F, FontStyle.Bold, GraphicsUnit.Point, ((byte)(0)));
label.ForeColor = Color.Red;
label.Cursor = Cursors.Hand;
label.Click += Label_Click;
tabControl1.TabPages[tabControl1.SelectedIndex].Controls.Add(label);
label.Dock = DockStyle.Right;
}
}
private void Label_Click(object sender, EventArgs e)
{
// 关闭调用的Form窗体
Label label = sender as Label;
TabPage tabPage = label.Parent as TabPage;
foreach (Form form in forms)
{
if (form.Text == tabPage.Text)
{
form.Close();
forms.Remove(form);
break;
}
}
tabControl1.TabPages.Remove(tabPage);
}
}
```
阅读全文