Sapmle 
Part 1
//////////////////////using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.ColumnHeader m_UserName;
private System.Windows.Forms.ColumnHeader m_UserAge;
private System.Windows.Forms.ColumnHeader m_UserSex;
private System.Windows.Forms.ColumnHeader m_UserAddress; private UserInfo m_userInfo; private System.ComponentModel.Container components = null; public Form1()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null) 
{
components.Dispose();
}
}
base.Dispose( disposing );
} private void InitializeComponent()
{
this.listView1 = new System.Windows.Forms.ListView();
this.m_UserName = new System.Windows.Forms.ColumnHeader();
this.m_UserAge = new System.Windows.Forms.ColumnHeader();
this.m_UserSex = new System.Windows.Forms.ColumnHeader();
this.m_UserAddress = new System.Windows.Forms.ColumnHeader();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
// 
// listView1
// 
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.m_UserName,
this.m_UserAge,
this.m_UserSex,
this.m_UserAddress});
this.listView1.Dock = System.Windows.Forms.DockStyle.Left;
this.listView1.FullRowSelect = true;
this.listView1.Location = new System.Drawing.Point(0, 0);
this.listView1.MultiSelect = false;
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(406, 306);
this.listView1.TabIndex = 0;
this.listView1.View = System.Windows.Forms.View.Details;
this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
// 
// m_UserName
// 
this.m_UserName.Text = "Name";
this.m_UserName.Width = 74;
// 
// m_UserAge
// 
this.m_UserAge.Text = "Age";
// 
// m_UserSex
// 
this.m_UserSex.Text = "Sex";
// 
// m_UserAddress
// 
this.m_UserAddress.Text = "Address";
this.m_UserAddress.Width = 195;
// 
// button1
// 
this.button1.Location = new System.Drawing.Point(450, 29);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(113, 23);
this.button1.TabIndex = 1;
this.button1.Text = "Init User List";
this.button1.Click += new System.EventHandler(this.button1_Click);
// 
// button2
// 
this.button2.Location = new System.Drawing.Point(451, 77);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(114, 23);
this.button2.TabIndex = 2;
this.button2.Text = "Open User Form";
this.button2.Click += new System.EventHandler(this.button2_Click);
// 
// Form1
// 
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(586, 306);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.listView1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false); }
[STAThread]
static void Main() 
{
Application.Run(new Form1());
} //Add Users into ListView
private void InitUserListView()
{
ListViewItem[] items = new ListViewItem[20]; listView1.BeginUpdate();
this.listView1.Items.Clear();
for(int i = 0 ; i < 20; i++)
{
User user = new User("User" + i.ToString(), i, (i%2==0)?'M':'F', "Address" + i.ToString());
ListViewItem viewItem = new ListViewItem(new string[]{user.Name, user.Age.ToString(), user.Sex.ToString(), user.Address});
viewItem.Tag = user;
items[i] = viewItem;
} listView1.Items.AddRange(items); listView1.EndUpdate();
} private void button1_Click(object sender, System.EventArgs e)
{
InitUserListView();
} private void Form1_Load(object sender, System.EventArgs e)
{

} private void button2_Click(object sender, System.EventArgs e)
{
if (this.m_userInfo == null)
{
m_userInfo = new UserInfo();
m_userInfo.Show();
m_userInfo.Closing += new CancelEventHandler(m_userInfo_Closing);
}
else
{
m_userInfo.Show();
}
} private void m_userInfo_Closing(object sender, CancelEventArgs e)
{
m_userInfo = null;
} private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
{
if (m_userInfo == null) return; ListView.SelectedListViewItemCollection items = listView1.SelectedItems; if (items.Count > 0)
{
m_userInfo.User = items[0].Tag as User; 
}
}
}

解决方案 »

  1.   

    Part 2
    //////////////////
    public class User
    {
    public string Name = "";
    public int Age = 0;
    public char Sex = 'M';
    public string Address = ""; public User(string p_Name, int p_Age, char p_Sex, string p_Address)
    {
    Name = p_Name;
    Age = p_Age;
    Sex = p_Sex;
    Address = p_Address;
    }
    }
    public class UserInfo : System.Windows.Forms.Form
    {
    private User m_user; public User User
    {
    get
    {
    return m_user;
    }
    set
    {
    m_user = value;
    OnUserChanged();
    }
    } private void OnUserChanged()
    {
    this.m_txtName.Text = m_user.Name;
    this.m_txtAge.Text = m_user.Age.ToString();
    this.m_txtSex.Text = m_user.Sex.ToString();
    this.m_txtAddress.Text = m_user.Address;
    } private System.Windows.Forms.Label label1;
    private System.Windows.Forms.TextBox m_txtName;
    private System.Windows.Forms.TextBox m_txtSex;
    private System.Windows.Forms.Label label2;
    private System.Windows.Forms.TextBox m_txtAge;
    private System.Windows.Forms.Label label3;
    private System.Windows.Forms.TextBox m_txtAddress;
    private System.Windows.Forms.Label label4; private System.ComponentModel.Container components = null; public UserInfo()
    {
    InitializeComponent();
    }
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if(components != null)
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } private void InitializeComponent()
    {
    this.label1 = new System.Windows.Forms.Label();
    this.m_txtName = new System.Windows.Forms.TextBox();
    this.m_txtSex = new System.Windows.Forms.TextBox();
    this.label2 = new System.Windows.Forms.Label();
    this.m_txtAge = new System.Windows.Forms.TextBox();
    this.label3 = new System.Windows.Forms.Label();
    this.m_txtAddress = new System.Windows.Forms.TextBox();
    this.label4 = new System.Windows.Forms.Label();
    this.SuspendLayout();
    // 
    // label1
    // 
    this.label1.Location = new System.Drawing.Point(16, 24);
    this.label1.Name = "label1";
    this.label1.Size = new System.Drawing.Size(76, 23);
    this.label1.TabIndex = 0;
    this.label1.Text = "Name";
    this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
    // 
    // m_txtName
    // 
    this.m_txtName.Location = new System.Drawing.Point(99, 25);
    this.m_txtName.Name = "m_txtName";
    this.m_txtName.Size = new System.Drawing.Size(151, 19);
    this.m_txtName.TabIndex = 1;
    this.m_txtName.Text = "";
    // 
    // m_txtSex
    // 
    this.m_txtSex.Location = new System.Drawing.Point(99, 99);
    this.m_txtSex.Name = "m_txtSex";
    this.m_txtSex.Size = new System.Drawing.Size(151, 19);
    this.m_txtSex.TabIndex = 3;
    this.m_txtSex.Text = "";
    // 
    // label2
    // 
    this.label2.Location = new System.Drawing.Point(16, 98);
    this.label2.Name = "label2";
    this.label2.Size = new System.Drawing.Size(76, 23);
    this.label2.TabIndex = 2;
    this.label2.Text = "Sex";
    this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
    // 
    // m_txtAge
    // 
    this.m_txtAge.Location = new System.Drawing.Point(99, 62);
    this.m_txtAge.Name = "m_txtAge";
    this.m_txtAge.Size = new System.Drawing.Size(151, 19);
    this.m_txtAge.TabIndex = 5;
    this.m_txtAge.Text = "";
    // 
    // label3
    // 
    this.label3.Location = new System.Drawing.Point(16, 61);
    this.label3.Name = "label3";
    this.label3.Size = new System.Drawing.Size(76, 23);
    this.label3.TabIndex = 4;
    this.label3.Text = "Age";
    this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
    // 
    // m_txtAddress
    // 
    this.m_txtAddress.Location = new System.Drawing.Point(100, 133);
    this.m_txtAddress.Name = "m_txtAddress";
    this.m_txtAddress.Size = new System.Drawing.Size(151, 19);
    this.m_txtAddress.TabIndex = 7;
    this.m_txtAddress.Text = "";
    // 
    // label4
    // 
    this.label4.Location = new System.Drawing.Point(17, 132);
    this.label4.Name = "label4";
    this.label4.Size = new System.Drawing.Size(76, 23);
    this.label4.TabIndex = 6;
    this.label4.Text = "Address";
    this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
    // 
    // UserInfo
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
    this.ClientSize = new System.Drawing.Size(271, 177);
    this.Controls.Add(this.m_txtAddress);
    this.Controls.Add(this.label4);
    this.Controls.Add(this.m_txtAge);
    this.Controls.Add(this.label3);
    this.Controls.Add(this.m_txtSex);
    this.Controls.Add(this.label2);
    this.Controls.Add(this.m_txtName);
    this.Controls.Add(this.label1);
    this.Name = "UserInfo";
    this.Text = "UserInfo";
    this.TopMost = true;
    this.ResumeLayout(false); }
    }