当前位置:编程学习 > C#/ASP.NET >>

winForm程序设计问题



请问这种UI怎么实现,在左边选择不同的,右边显示不一样的输入框和摁钮之类的?
--------------------编程问答-------------------- 左边放个treeview,右边是个panel。
左边每一项对一个窗体。
根据左边选择的项,panel加载相应的窗体。
ps:winform中panel可以将其它的窗体加载进来的。 --------------------编程问答--------------------
引用 1 楼 u011303459 的回复:
左边放个treeview,右边是个panel。
左边每一项对一个窗体。
根据左边选择的项,panel加载相应的窗体。
ps:winform中panel可以将其它的窗体加载进来的。


能写两行代码说一下panel怎么加载窗口么? --------------------编程问答-------------------- 定义一个自定义控件,作为右边,用:
panel.Controls.Clear();
panel.Controls.Add(new UserControl1()); --------------------编程问答--------------------
引用 2 楼 QQ297095637 的回复:
Quote: 引用 1 楼 u011303459 的回复:

左边放个treeview,右边是个panel。
左边每一项对一个窗体。
根据左边选择的项,panel加载相应的窗体。
ps:winform中panel可以将其它的窗体加载进来的。


能写两行代码说一下panel怎么加载窗口么?


            Form1 fm = new Form1();
            fm.TopLevel = false;
            fm.Show();
            panel1.Controls.Add(fm); --------------------编程问答--------------------
引用 3 楼 caozhy 的回复:
定义一个自定义控件,作为右边,用:
panel.Controls.Clear();
panel.Controls.Add(new UserControl1());


+1 --------------------编程问答--------------------
引用 3 楼 caozhy 的回复:
定义一个自定义控件,作为右边,用:
panel.Controls.Clear();
panel.Controls.Add(new UserControl1());

+1 --------------------编程问答-------------------- 左边放 treeview 右边用panal 

具体的按钮界面什么的么一用UserControl  --------------------编程问答--------------------

//用户自定义控件 

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Drawing; 
using System.Data; 
using System.Text; 
using System.Windows.Forms; 

namespace MenuTest.UCcontrol 

public partial class Menu : UserControl 

public Menu() 

InitializeComponent(); 


void CreateFirst() 

mylistView.Items.Clear(); 
mylistView.LargeImageList = imageListF; 
mylistView.Items.Add("第一子菜单", 0); 
mylistView.Items.Add("第二子菜单", 1); 

void CreateSecond() 

mylistView.Items.Clear(); 
mylistView.LargeImageList = imageListS; 
mylistView.Items.Add("第一子菜单", 0); 
mylistView.Items.Add("第二子菜单", 1); 
mylistView.Items.Add("第三子菜单", 2); 
mylistView.Items.Add("第四子菜单", 3); 

void CreateThree() 

mylistView.Items.Clear(); 
mylistView.LargeImageList = imageListT; 
mylistView.Items.Add("第一子菜单", 0); 
mylistView.Items.Add("第二子菜单", 1); 

/// <summary> 
/// 单击不同按钮 显示不同菜单 
/// 原理:1 取到点击按钮 2 循环panel中的所有控件,如果是按钮 
/// 再判断是否是点击的按钮,则设置其显示的位置 
/// 3 别忘了所有控件显示在最前面 BringToFront()函数 
/// </summary> 
/// <param name="sender"></param> 
/// <param name="e"></param> 
void ButtonClick(object sender, System.EventArgs e) 

//获取点击的按钮 
Button clickedButton = (Button)sender; 
// 取到tab索引 
int clickedButtonTabIndex = clickedButton.TabIndex; 

//button显示的位置 最顶或者最底部 
foreach (Control ctl in this.panel1.Controls) //取到panel1中的所有控件 

if (ctl is Button) //如果是Button 

Button btn = (Button)ctl; 
//如果取到的Button的TabIndex大于点击按钮的TabIndex 
//即循环到得按钮不是所点击的按钮 
if (btn.TabIndex > clickedButtonTabIndex) 

//如果循环到的按钮没有显示在底部 
if (btn.Dock != DockStyle.Bottom) 

//则让其显示在底部 
btn.Dock = DockStyle.Bottom; 
// 显示在最前 
btn.BringToFront(); 


else //循环到点击按钮 

//没在顶部就显示在顶部 
if (btn.Dock != DockStyle.Top) 

btn.Dock = DockStyle.Top; 
// 显示在最前 
btn.BringToFront(); 





switch (clickedButton.Text) 

case "第一项": 
CreateFirst(); 
break; 

case "第二项": 
CreateSecond(); 
break; 

case "第三项": 
CreateThree(); 
break; 

mylistView.BringToFront(); 


//自定义自己的事件 
public event EventHandler menu_listView1_SelectedIndexChanged; 

//在此触发自己的自定义事件 以备在主窗体中挂接该事件 
private void listView1_SelectedIndexChanged(object sender, EventArgs e) 

if (this.menu_listView1_SelectedIndexChanged != null) 
menu_listView1_SelectedIndexChanged(sender, e); 





///////////////////////////////////////
//主窗体 

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 

namespace MenuTest 

public partial class Form1 : Form 

public Form1() 

InitializeComponent(); 

//实例化用户控件 
UCcontrol.Menu menu = new UCcontrol.Menu(); 
string Item; 

private void Form1_Load(object sender, EventArgs e) 



this.Controls.Add(menu); 
//挂接用户控件事件 
this.menu.menu_listView1_SelectedIndexChanged += new EventHandler(menu_listView1_SelectedIndexChanged); 



// 
#region //测试用户定义控件 
void Do() 

MessageBox.Show("第一子菜单"); 

// 
void Do1() 

MessageBox.Show("第二子菜单"); 


//根据不同的点击执行不同的事件 
void Dosomething() 

switch(Item) 

case "第一子菜单": 
Do(); 
break; 
case "第二子菜单": 
Do1(); 
break; 




/// <summary> 
/// 实现用户控件自定义事件 即自己定义的事件 
/// </summary> 
/// <param name="sender"></param> 
/// <param name="e"></param> 
private void menu_listView1_SelectedIndexChanged(object sender, EventArgs e) 


ListView listView = (ListView)sender; //取到发送事件的控件 
if (listView.SelectedIndices.Count > 0) 

Item = listView.SelectedItems[0].Text; 
Dosomething(); 


#endregion 




 
--------------------编程问答-------------------- 其实就是个MDI啊,百度搜“父窗体,子窗体”,全部都搞懂了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,