winform小白請教
比如:
1、Form1放了一個FlowLayoutPanel
2、再建一個Form2,里面放一些控制元件,比如放個PictureBox
4、根據資料庫拉取的資料動態加載Form2到FlowLayoutPanel里,一條資料生成一個Form2.
我現在可以在最終界面實作點擊右鍵“顯示圖片”,讓點擊的視窗顯示圖片。我想實作單擊一個按鈕:顯示所有圖片,讓加載出來的視窗同時顯示圖片。請問該如何實作。
謝謝!
uj5u.com熱心網友回復:
form1加:private void button1_Click(object sender, EventArgs e)
{
Form2 f2=new Form2(pictureBox1.Image);
f2.Show();
}
form2 加
public Form2(Image b)
{
InitializeComponent();
pictureBox1.Image = b;
}
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
你這個是點擊后鈕然,多次創建視窗,同時給每個視窗傳圖片資料,并顯示!我的需求是,打開f1,同時就創建了多個f2,為了求速度,默認是不加載圖片的,只是傳了了相關聯的資料!比如我只是給f2傳了id,需要加載圖片時,再根據id獲得圖片資料再顯示!我能實作單獨一個一個的顯示,我想咨詢的是如何點擊f1上的按鈕,或者從f2上帶過來的某個控制元件,只要一點擊,所有的f2都顯示圖片!后uj5u.com熱心網友回復:
2個方式第一個:創建個事件方法例如
protect void xxxClick(object sender,EventArgs e)
{
//todo
}
然后選擇你要注冊事件的控制元件 右鍵屬性 有個 雷電 符號 選擇你要注冊的事件然后在選擇 你的事件方法即可
第二種:
在建構式中所有的 你要注冊的事件用 += 后面跟上你的事件名稱即可。但是要求 委托的輸入和輸出引數要一致
uj5u.com熱心網友回復:
這樣?
uj5u.com熱心網友回復:
對的,就是這樣,能說下原理嗎?代碼可以貼出來看下嗎?謝謝!
uj5u.com熱心網友回復:
簡答來說就是子表單訂閱了父表單的事件并實作
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public delegate void SetPic();
public event SetPic SetPic_Event;
private void Form2_Load(object sender, EventArgs e)
{
for (int i = 0; i < 3; i++)
{
Form3 frm = new Form3(this);
frm.PicId = Guid.NewGuid().ToString();
frm.Show();
}
}
private void Button1_Click(object sender, EventArgs e)
{
}
private void Button2_Click(object sender, EventArgs e)
{
SetPic_Event();
}
}
public partial class Form3 : Form
{
public string PicId { get; set; }
public Form3() { InitializeComponent(); }
public Form3(Form2 frm)
{
InitializeComponent();
frm.SetPic_Event += Frm_SetPic_Event;
}
private void Frm_SetPic_Event()
{
label1.Text = PicId;
}
}
uj5u.com熱心網友回復:
按照你的方法實作了,非常感謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/131124.html
標籤:C#
