此論壇問題練習是根據前輩提供給原 PO 的建議
如果您是寫win form可以寫以下功能:form1、form2 都可以開啟 form3,form1 有text box、form2 有combo box,請寫出 form3 button click 後可以取得開始自己的那個表單裡控制項的值
- 建立 IDemo Interface 並建立 showData Method
namespace WindowsFormsApplication1
{
public interface IDemo
{
string showData();
}
}
namespace WindowsFormsApplication1
{
public partial class Form1 : Form,IDemo
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "Form1 內 Textbox 值";
}
private void button1_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3() { Tag = this};
f3.ShowDialog();
}
public string showData()
{
return textBox1.Text;
}
}
}
namespace WindowsFormsApplication1
{
public partial class Form2 : Form ,IDemo
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
comboBox1.Text = "Form2 ComboxBox 內的值";
}
public string showData()
{
return comboBox1.Text;
}
private void button1_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3() { Tag = this};
f3.ShowDialog();
}
}
}
namespace WindowsFormsApplication1
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// 練習一開始是想把 Tag 再鑄型為 Form1 和 Form2,
// 才發現到必須寫判斷是假如 Form1 鑄型為 null 就進行 Form2 鑄型,
// 那假如不只兩個 Form 的話,變成會沒完沒了,
// 但透過鑄型為 IDemo 的情況下,就可以不管 Tag 內為誰,來呼叫 showData
IDemo f = this.Tag as IDemo;
MessageBox.Show(f.showData());
}
}
}
沒有留言:
張貼留言