none
[C#]父表單如何在子表單顯現資料 RRS feed

  • 問題

  •  

    1.Form1呈現資料,按「修改」按鈕叫出Form2修改,按下OK(或按Enter)可將Form1相關資料做更新,按下Cancel(或按ESC)則將Form2做關閉
    2.Form2按下Cancel(或按ESC)時呼叫MessageBox,詢問是否真的要關閉(只需「是」「否」兩個按鈕),按「是」則關閉Form2,按「否」則維持Form2不變。
    3.使用PicturBox,並於Click事件時開啟OpenFileDialog載入圖片(圖片大小需設定為縮放成元件的大小)。
    4.把Form2的修改結果在按下「是」後,更新Form1的資料
    5.Form1資料呈現方式可自訂(需包含姓名、性別、年級、興趣、圖片及自述),唯需使用ListBox來呈現Form2的「興趣」勾選的項目。

    以上的功能大致都做好了

    但是我不曉得怎麼在一個form裡輸入資料,在另一個form顯示資料

    以下是我的程式碼

    form1:

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

    private void button1_Click(object sender, EventArgs e)
    {

    using (MyDialog mydlg = new MyDialog())
    {
    if (mydlg.ShowDialog() == DialogResult.OK)
    {
    label1.Text = mydlg.MyText;
    }
    }
    }
    }

    form2:

    public partial class MyDialog : Form
    {
    private string myText;
    public string MyText
    {
    get { return myText; }
    set { myText = value; }
    }
    public MyDialog()
    {
    InitializeComponent();
    }
    private void btnOK_Click(object sender, EventArgs e)
    {
    myText = textBox1.Text;
    }
    private void btnCancel_Click(object sender, EventArgs e)
    {
    myText = "";
    }
    private void button2_Click(object sender, EventArgs e)
    {
    MessageBox.Show("確定要放棄修改?", "!", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
    }

    private void pictureBox1_Click(object sender, EventArgs e)
    {
    OpenFileDialog dlg = new OpenFileDialog();
    dlg.InitialDirectory = "C:\\";
    dlg.Title = "Open Photo";
    dlg.Filter = "Text files (*.jpg)|*.jpg|All files (*.*)|*.*";
    if (dlg.ShowDialog() == DialogResult.OK)
    {
    pictureBox1.Image = new Bitmap(dlg.OpenFile());
    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
    }
    dlg.Dispose();
    }
    }
    希望能幫忙!!謝謝
    2008年5月2日 上午 01:47

所有回覆

  • HI,

     

    要在一個form裡輸入資料,在另一個form顯示資料, 這樣做很OK啊:

     

    private void button1_Click(object sender, EventArgs e)
    {

    using (MyDialog mydlg = new MyDialog())
    {
    if (mydlg.ShowDialog() == DialogResult.OK)
    {
    label1.Text = mydlg.MyText;
    }
    }
    }

    有什麼問題嗎?

     

    tihs

    2008年5月2日 上午 03:18
  • Form1 :

    Code Snippet
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 obj = new Form2();
                if (obj.ShowDialog() == DialogResult.OK)
                {
                    label1.Text = obj.GetText;
                }
                obj.Dispose();
            }

     

     

     

    Form2 :

    Code Snippet

            internal string GetText
            {
                get
                {
                    return textBox1.Text;
                }
            }

     

     

     

    其它原理都一樣~

    2008年5月2日 上午 06:59