可以說我有兩種形式(Form1和Form2)。如何從對話框中更改Form1中的某些內容?
- Form1上有一個PictureBox
- 窗體2我有一個OpenFileDialog
Form1中是主要形式,所以,當我運行該項目,我看到Form1上。
如何從Form2更改Form1中的PictureBox中的圖像?
可以說我有兩種形式(Form1和Form2)。如何從對話框中更改Form1中的某些內容?
Form1中是主要形式,所以,當我運行該項目,我看到Form1上。
如何從Form2更改Form1中的PictureBox中的圖像?
你可以很簡單地做到這一點。 首先改變你的代碼(在Form1中),顯示窗體2到看起來像這樣:
<variable-of-type-Form2>.ShowDialog(this);
,或者如果你不想窗口2是模態
<variable-of-type-Form2>.Show(this);
下一頁時,你有路徑的圖像,你可以訪問的PictureBox這樣
((PictureBox)this.Owner.Controls["pictureBox1"]).Image=Image.FromFile(<filename>);
假設您有圖片框在Form1上的名稱爲 「pictureBox1」
How do I pass a value from a child back to the parent form?
基本上,公開該獲取的一些屬性打開文件對話框返回的值,讓父窗體抓住它。
將一個窗體作爲參數傳遞給第二個窗體的構造函數,或添加一個傳遞該引用的方法。在你參考了你的表單之後,你可以用from來做任何你想要的。
是否將圖片框分享爲公衆會員取決於您。但是,我建議以第一種形式公開使用公共方法SetImage()
。第二種形式將稱爲form1.SetImage()
。
[更新]
等待,爲什麼你需要從OpenFileDialog的設置圖像,你只需要在對話框中收到文件名,然後打開文件並加載到表單中。
像這樣:
private void button1_Click(object sender, EventArgs e)
{
using (var dialog = new OpenFileDialog())
{
var result = dialog.ShowDialog();
if (result != DialogResult.OK)
return;
pictureBox1.Image = Image.FromFile(dialog.FileName);
}
}
這是代碼Form1的內部。
[更新]
這裏的基本思想是如何從其他接入一種形式。
public class MyForm1 : Form
{
public MyForm1()
{
InitializeComponent();
}
public void SetImage(Image image)
{
pictureBox1.Image = image;
}
private void button1_Click(object sender, EventArgs e)
{
var form2 = new Form2(this);
form2.Show();
}
}
public class MyForm2 : Form
{
private MyForm1 form1;
public MyForm2()
{
InitializeComponent();
}
public MyForm2(MyForm1 form1)
{
this.form1 = form1;
}
private void button1_Click(object sender, EventArgs e)
{
form1.SetImage(yourImage);
}
}
理想情況下,您想要在ModelViewController模式中構造代碼。然後,只需在模型中爲圖片框中的圖片添加參考。當與Form2中的OpenFileDialog進行交互時,您可以調用模型適配器接口掛鉤到視圖(Form1和Form2)中以更改模型中的圖像。總之,您需要從視圖到模型的回調。如果您不想將代碼重新設計爲MVC,只需擁有一個共享對象來保存Form1和Form2在構造函數中接收的圖像引用,以便它們都可以對其進行修改。
在Program.cs文件中,您可以設置任何值,FormOptions或窗體的實例。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var frm = new Form1();
// Add the code to set the picturebox image url
Application.Run(frm);
}
此外,您可以將構造函數添加到Form1並通過構造函數傳遞參數。
你能更具體嗎? – Pedrum 2011-05-24 04:11:28
這是重新解決問題的好辦法......除非您有要求以不同形式設置圖片。 – 2011-05-24 04:30:47
我知道這個... 如何改變form1中picbox的圖片從form2 ...? – Pedrum 2011-05-24 04:53:45