1. 程式人生 > >c# 子類改變父類資訊的問題,兩個窗體類傳值的問題

c# 子類改變父類資訊的問題,兩個窗體類傳值的問題

固定一個窗體在另一個窗體中首先需要設定父窗體IsMdiContainer屬性為True,然後在Load事件中加入以下語句:

		NewContact newConFrm = new NewContact(this);
		newConFrm.NewGroup = CreateGroup;
                newConFrm.MdiParent = this;
                newConFrm.Show();

注意不能用ShowDialog,因為它不是父類。
這樣的話如果在第三行下加程式碼則會略過:

		NewContact newConFrm = new NewContact(this);
		newConFrm.NewGroup = CreateGroup;
                newConFrm.MdiParent = this;
                newConFrm.Show();
                Nam=newConFrm.Nam;

第四行這句話就不會起作用,所以需要在newConFrm裡面點選按鈕的時候改變父窗體的資訊:

        private Form1 form;
        public NewContact()
        {
            InitializeComponent();
        }
        public NewContact(Form1 f)
        {
            form = f;
            InitializeComponent();
        }

首先private Form1 form;是存了一個父類的例項,之後的第二個建構函式就可以使用form來改變父類中的變量了。

			form.all += 1;
            form.Nam[form.all] = txtName.Text;

不過注意在改變的時候需要在前面加上一個form.
從一個窗體傳和接收值只需要加上

 public string[] Nam { get; set; }

其它的型別也可以用,

public ComboBox NewGroup { get; set; }

不過combox賦值需要一條一條賦

foreach (string s in NewGroup.Items)
                cbName.Items.Add(s);

退出子窗體的方法:

this.Close();