【发布时间】:2013-07-08 09:37:11
【问题描述】:
我有两个子窗体。第一个表单 (Employee) 包含所有文本框和一个用于打开另一个名为 Search 的子表单的按钮。搜索表单有一个组合框。用户从组合框中选择数据后,组合框中的数据将以员工形式显示。
员工表格:
public string s;
protected override void OnShown(EventArgs e)
{
txtName.Text = s;
base.OnShown(e);
}
搜索表格:
private void cbFind_SelectedValueChanged(object sender, EventArgs e)
{
if (cbFind.SelectedItem != null)
{
emp em = new emp();
em.s = cbFind.SelectedItem.ToString();
em.ShowDialog();
}
}
我不希望在用户从组合框中选择数据后打开另一个员工表单。我希望它出现在已经打开的员工表单上..
编辑:
员工表格
namespace Master
{
public partial class Employee : Form
{
public Employee()
{
InitializeComponent();
searchForm.ItemSelected += ItemSelected;
}
private SearchForm searchForm = new SearchForm();
private void ItemSelected(object sender, ItemSelectedEventArgs e)
{
txtName.Text = e.SelectedItem.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
SearchForm searchForm = new SearchForm();
searchForm.Show();
}
}
}
搜索表单
namespace Master
{
public partial class SearchForm : Form
{
public SearchForm()
{
InitializeComponent();
}
private void SearchForm_Load(object sender, EventArgs e)
{
}
private void cbFind_SelectedValueChanged(object sender, EventArgs e)
{
if (cbFind.SelectedItem != null)
{
if(ItemSelected != null)
ItemSelected(this, new ItemSelectedEventArgs(cbFind.SelectedItem));
}
}
public delegate void ItemSelectedEventHandler(object sender, ItemSelectedEventArgs e);
public event ItemSelectedEventHandler ItemSelected;
}
public class ItemSelectedEventArgs : EventArgs
{
public object SelectedItem { get; set; }
public ItemSelectedEventArgs(object selectedItem)
{
SelectedItem = selectedItem;
}
}
}
【问题讨论】:
-
您应该将搜索表单作为对话框打开,如果用户选择记录,您应该设置 DialogResult = ok。然后从父窗体中,您可以检查用户是否按下了确定,您可以调用子窗体的属性来获取所选记录。如果您需要这方面的示例,请告诉我。
-
我该如何实现?是的,我需要看一个例子。
-
在答案中发布