首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于窗体的有关问题

2011-12-25 
关于窗体的问题一个MDI主窗体MDIform,被分成左右两部分,左边为树,点击树节点时右面显示相应的子窗体(form1

关于窗体的问题
一个MDI主窗体MDIform,被分成左右两部分,左边为树,点击树节点时右面显示相应的子窗体(form1),子窗体上有按扭button,点击button,增加一个树节点,当前的字窗体(form1)关闭,同时另一个子窗体(form2)显示,请问怎么实现?

[解决办法]
有点意思:用.net2003实现
Form1主窗体 Form2子窗体

Form1:
----------------------------------------------------
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace TestTree
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TreeView treeView1;
private System.Windows.Forms.Splitter splitter1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.treeView1 = new System.Windows.Forms.TreeView();
this.splitter1 = new System.Windows.Forms.Splitter();
this.SuspendLayout();
//
// treeView1
//
this.treeView1.Dock = System.Windows.Forms.DockStyle.Left;
this.treeView1.ImageIndex = -1;
this.treeView1.Location = new System.Drawing.Point(0, 0);
this.treeView1.Name = "treeView1 ";
this.treeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
new System.Windows.Forms.TreeNode( "子窗口 ", new System.Windows.Forms.TreeNode[] {
new System.Windows.Forms.TreeNode( "form21 "),
new System.Windows.Forms.TreeNode( "form22 ")})});
this.treeView1.SelectedImageIndex = -1;
this.treeView1.Size = new System.Drawing.Size(121, 366);
this.treeView1.TabIndex = 1;
this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);
//
// splitter1
//
this.splitter1.Location = new System.Drawing.Point(121, 0);
this.splitter1.Name = "splitter1 ";
this.splitter1.Size = new System.Drawing.Size(3, 366);
this.splitter1.TabIndex = 2;
this.splitter1.TabStop = false;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(520, 366);
this.Controls.Add(this.splitter1);
this.Controls.Add(this.treeView1);
this.IsMdiContainer = true;
this.Name = "Form1 ";
this.Text = "Form1 ";
this.ResumeLayout(false);

}
#endregion

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if(treeView1.SelectedNode.Parent != null)


{
Form2 frm = new Form2();
frm.Text = treeView1.SelectedNode.Text;
frm.MdiParent=this;
frm.Show();
}
}

public void addnode(string nodename)
{
treeView1.Nodes[0].Nodes.Add(new TreeNode(nodename));
}
}
}


Form2:
---------------------------------
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace TestTree
{
/// <summary>
/// Form2 的摘要说明。
/// </summary>
public class Form2 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

public Form2()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(80, 40);
this.textBox1.Name = "textBox1 ";
this.textBox1.Size = new System.Drawing.Size(168, 21);
this.textBox1.TabIndex = 0;
this.textBox1.Text = "textBox1 ";
//
// button1
//
this.button1.Location = new System.Drawing.Point(72, 80);
this.button1.Name = "button1 ";
this.button1.TabIndex = 1;
this.button1.Text = "button1 ";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(8, 40);
this.label1.Name = "label1 ";
this.label1.Size = new System.Drawing.Size(66, 17);
this.label1.TabIndex = 2;
this.label1.Text = "Form Name: ";
//
// Form2
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.label1);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.Name = "Form2 ";
this.Text = "Form2 ";
this.ResumeLayout(false);

}
#endregion

private void button1_Click(object sender, System.EventArgs e)
{
Form2 frm = new Form2();
Form1 mainfrm = (Form1)this.MdiParent;
frm.Text = textBox1.Text.Trim();
frm.MdiParent = mainfrm;
mainfrm.addnode(frm.Text);
frm.Show();
this.Dispose();
}
}
}

热点排行