0

2 つの子フォームがあります。最初のフォーム (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;
        }
    }
}
4

2 に答える 2

0

親フォームでこれを行う必要があります

     private void button1_Click(object sender, EventArgs e)
    {
        Form1 searchForm = new Form1();
        if (searchForm.ShowDialog() == DialogResult.OK)
        {
            string selectedRecord =  searchForm.SelectedRecord;
        }
    }

ここで、button1 は検索フォームを開くためのボタンです。Form1 は検索フォームです。selectedRecord は、検索フォームを閉じる前に設定したプロパティです。任意のオブジェクトである可能性がありますが、文字列であると想定しています。

于 2013-07-08T10:17:22.837 に答える