0

これは少し紛らわしいように聞こえるかもしれませんが、ここで説明します。だから私はこの親フォームを持っていて、ボタンをクリックすると新しい子フォームが表示されます(私の親フォームはまだ開いていることに注意してください)。必要なのは、子フォームのボタンを押したときに、最初から開いていた親フォームを表示して閉じるための新しい親フォームです。これが混乱しないように願っています。私はそれで遊んでみますが、何もうまくいかないようです私は私の親フォームにこのようなものを持っています

Form2 loging = new Form2();    
loging.ShowDialog();

私の子供のフォームに

Form1 loging = new Form1();
loging.Close()
loging.ShowDialog();
this.Close();
4

3 に答える 3

1

Mitch へのコメントによると、子フォームを閉じた後、メイン フォームのデータを再バインドする必要があるようです。これは、メイン フォームを閉じて再度開くよりもはるかに優れた方法です。

于 2012-10-07T01:22:50.313 に答える
0

ミッチへのコメントに基づいて、これはあなたがすべきことです:

  1. 親フォームで、顧客リストを指す静的な ListView オブジェクトを作成します

    public partial class Form1 : Form
    {
        public static ListView lsvCustomer; 
        public Form1()
        {
            InitializeComponent();
            // this will allow access from outside the form
            lsvCustomer = this.listView1; 
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
           frmInput f = new frmInput();
           f.ShowDialog(this);
        }
    }
    
  2. 次に、子フォームで、次のように子フォームから直接リストを更新します。

    public partial class frmInput : Form
    {
        public frmInput()
        {
            InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            //update user input to customer list in parent form
            Form1.lsvCustomer.Items.Add(textBox1.Text);
        }
    }
    
于 2012-10-07T02:11:18.947 に答える
0

つまり、ウィンドウの親を変更することはできず、ウィンドウがモーダルかどうかを変更することはできません。子を破棄し、親を閉じ、新しい親を開き、新しい子を表示します。または、子ウィンドウをモーダルにする必要がない場合は、子ウィンドウを作成Form.Show()し、子フォームで次のようにします。

parentForm.Close();
Form newParent = new NewParentForm();
newParent.Show();
this.BringToFront();

MFC は以前はモーダルであると偽ることができましたが、それはカスタム ウィンドウ プロシージャを使用して行われました。C# では特に簡単なことではありませんでした。

于 2012-10-07T01:06:13.633 に答える