winForm程序设计问题 左边放个treeview,右边是个panel。左边每一项对一个窗体。根据左边选择的项,panel加载相应的窗体。ps:winform中panel可以将其它的窗体加载进来的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 能写两行代码说一下panel怎么加载窗口么? 定义一个自定义控件,作为右边,用:panel.Controls.Clear();panel.Controls.Add(new UserControl1()); 能写两行代码说一下panel怎么加载窗口么? Form1 fm = new Form1(); fm.TopLevel = false; fm.Show(); panel1.Controls.Add(fm); 左边放 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啊,百度搜“父窗体,子窗体”,全部都搞懂了 关于客户端水晶报表环境问题……急急急急急 为什么我的datagridview一绑定就变格式? 帮忙注释下这段XML。。在线等。急 为什么ds.Tables["myTable"]老为空(在线等) form类,设置了Region属性后,为什么在WndProc中捕获不到WM_NCMOUSELEAVE消息了呢? 求C#指针的例子 请问在C#中是否也有类似于DELPHI中的StringList?? 开发windows程序,不知道使用那个网格控件比较好,请赐教 各位谁有做加速齿轮方面的经验? 如何处理这个问题 紧急求教!!水晶报表在用户控件(UCtrl)内无法显示 Socket相关请教两个问题
能写两行代码说一下panel怎么加载窗口么?
panel.Controls.Clear();
panel.Controls.Add(new UserControl1());
能写两行代码说一下panel怎么加载窗口么? Form1 fm = new Form1();
fm.TopLevel = false;
fm.Show();
panel1.Controls.Add(fm);
//用户自定义控件 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
}
}