2011-10-06 19 views
-1

使用VB.Net如何重复Windows窗体(标签功能)

我有窗体名称为“员工入职”

用户想从5个选项卡打开一个员工入职.. 。

对于实施例

When the user open a Employee Entry form, while entering the details at that same time, user again open a employee entry form (2nd Employee entry form show like a new employee entry from with out any details) 

更多实施例

We can open Google, Yahoo, in one browser (by using Tab Function). 

如何做到这一点。

需要vb.net代码帮助

回答

1

我假设这是WinForms?您应该将您的员工条目设计为用户控件。然后,您可以在新员工的每个请求中向该表单添加该控件的新实例。你很可能有一个单独的Employee对象,你可以传递给你的EmployeeEntry用户控件的每个实例。

EDIT1

创建具有在顶部的菜单条和所谓tsmiNewEmployee一个菜单项的形式。将选项卡控件添加到名为tabEntryForms的表单,并将其填充样式设置为Dock。从中删除所有默认标签页。

添加类:

public class EmployeeRecord 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public DateTime HireDate { get; set; } 
} 

添加一个名为EmployeeEntry用户控件。把osme Firts /姓放在它上面编辑cotrols等。添加一个保存按钮和一个取消按钮。

public partial class EmployeeEntry : UserControl 
{ 

    public event EventHandler Save; 

    public event EventHandler Cancel; 

    private EmployeeRecord empBeingEdited = null; 

    public EmployeeRecord Employee 
    { 
     get 
     { 
      return empBeingEdited; 
     } 
     set 
     { 
      empBeingEdited = value; 
      if (empBeingEdited == null) 
      { 
       // clear controls 
      } 
      else 
      { 
       // populate controls with employee values 
      } 
     } 
    } 

    public EmployeeEntry() 
    { 
     InitializeComponent(); 
    } 

    private void btnSave_Click(object sender, EventArgs e) 
    { 
     if (Save != null) 
      Save(this, EventArgs.Empty); 
    } 

    private void btnCancel_Click(object sender, EventArgs e) 
    { 
     if (Cancel != null) 
      Cancel(this, EventArgs.Empty); 
    } 
} 

而且在具有标签控件的主要形式有:

public partial class MainForm : Form 
{ 
    public MainForm() 
    { 
     InitializeComponent(); 
    } 

    private void tsmiNewEmployee_Click(object sender, EventArgs e) 
    { 

     TabPage tab = new TabPage("New Employee Entry"); 

     EmployeeEntry empEntry = new EmployeeEntry(); 
     empEntry.Employee = new EmployeeRecord(); 

     empEntry.Save += new EventHandler(EmployeeEntry_Save); 
     empEntry.Cancel += new EventHandler(EmployeeEntry_Cancel); 


     tab.Controls.Add(empEntry); 
     empEntry.Dock = DockStyle.Fill; 

     tabEntryForms.TabPages.Add(tab); 

    } 

    private void EmployeeEntry_Save(object source, EventArgs args) 
    { 
     EmployeeEntry empEntry = source as EmployeeEntry; 

     MessageBox.Show("Saved"); 

     TabPage parentTab = empEntry.Parent as TabPage; 
     parentTab.Controls.Remove(empEntry); 
     tabEntryForms.Controls.Remove(parentTab); 


    } 

    private void EmployeeEntry_Cancel(object source, EventArgs args) 
    { 
     EmployeeEntry empEntry = source as EmployeeEntry; 

     MessageBox.Show("NOT Saved"); 

     TabPage parentTab = empEntry.Parent as TabPage; 
     parentTab.Controls.Remove(empEntry); 
     tabEntryForms.Controls.Remove(parentTab); 


    } 
} 

应该让你开始那。

+0

给我一个例子,请... – Gopal

+0

@Gopal我会掀起一些东西 – tcarvin