Ana formda bir uygulama var ve gelen verileri işlemek ve ana formdaki çeşitli denetimlerdeki değişiklikleri yansıtacak bir olay işleyicisi kullanıyor. Bu iyi çalışıyor.Ana Formdaki Olayları C İçinde Başka Bir Biçimden Dinleme C#
Ayrıca uygulamada başka bir formum var. Herhangi bir zamanda çalışan bu ikinci formun birden fazla örneği olabilir.
Yapmak istediğim, bu ikinci formun her örneğinin ana formdaki olay işleyicisini dinlemesi ve ikinci formdaki örneğinin denetimlerini güncelleştirmesidir.
Bunu nasıl yaparım?
İşte bazı örnek kod. SecondaryForm'un her bir örneğini güncellemek için the_timer_Tick olay işleyicisinden bilgi istiyorum.
public partial class Form1 : Form
{
Timer the_timer = new Timer();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
the_timer.Tick += new EventHandler(the_timer_Tick);
the_timer.Interval = 2000;
the_timer.Enabled = true;
}
void the_timer_Tick(object sender, EventArgs e)
{
// I would like code in here to update all instances of SecondaryForm
// that happen to be open now.
MessageBox.Show("Timer ticked");
}
private void stop_timer_button_Click(object sender, EventArgs e)
{
the_timer.Enabled = false;
}
private void start_form_button_Click(object sender, EventArgs e)
{
SecondaryForm new_form = new SecondaryForm();
new_form.Show();
}
}
İkinci form kapatıldığında olay işleyicisini kaldırmayı unutmayın, aksi takdirde referans sızıntısına sahip olabilirsiniz ... –
SecondForm'a yapılan atıfların tümü SecondaryForm mu olmalıdır? Ve benim de yayınladığım ana formdaki gibi bir şey var mı? – Dave
Yea, demek istediğim SecondForm = SecondaryForm. Örneğin, Timer'ı herkese açık hale getirebilir veya erişim için bir özelliğe sahip olabilirsiniz ve FistForm olaylarını dinlemezsiniz, ancak zamanlayıcı etkinlikleri vardır: Koduma bakın, ben düzenleyeceğim – abatishchev