Wpis z mikrobloga

#csharp #visualstudio
Dobry wieczór,

mam problem z pewnym projektem, otóż chciałbym wykonać program który posiada cztery okienka. Jedno główne do wprowadzania danych(form1) i trzy pozostałe do wyświetlania ich (form2, form3, form4).
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication666
{

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

private void button1Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}

private void button2
Click(object sender, EventArgs e)
{
Form3 f3 = new Form3();
f3.Show();
}

private void button3Click(object sender, EventArgs e)
{
Form4 f4 = new Form4();
f4.Show();
}

private void button4
Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.label1.Text = comboBox1.Text;
}
}
}

Monitory 1, 2, 3, powinny być cały czas włączone, a dane dynamicznie zmieniane po naciśnięciu przycisku wyślij przy comboBoxach. Próbowałem to zrobić na zmiennych globalnych, ale z miernym skutkiem. Proszę o pomoc.
źródło: comment_zU00PA9MdXLrmoT9x95BciiNBxzE0Lnz.jpg
  • 5
@CrazyBaran: Pozatym na kiego grzyba ci 3 różne formy jak widze że wszystkie wyglądają tak samo. Zrobiłeś że label jest public? I zacznij kolego zmieniać nazwy przycisków w design bo długo tak nie pojedziemy.
@sepakasene: Spróbuj tak:

Np. W pliku Form2 zrób tak:

public partial class Form2 : Form
{
public static Form2 Instance;
public Form2()
{
InitializeComponent();
Instance = this;
}
}

A w Evencie kliku mniej więcej tak:

private void button1_Click(object sender, EventArgs e)
{
Form2.Instance.label1.Text = comboBox1.Text;
}
@sepakasene:
1. Do tego wystarczy Ci jeden form, nazwij go MonitorLabelForm.
2. Zadeklaruj sobie tablicę, listę lub inną kolekcję formów (ostatecznie 3 pola/property klasy Form, która je i zainicjalizuj ją instancjami.
3. Każde kliknięcie przycisku Monitor (1/2/3), niech odnosi się do odpowiedniego indexu z tej tablicy, i wykonuje na konkretnym obiekcie Show().
4. Label ustaw jako property publiczne (chociaż chyba akurat to zrobiłeś ok).
5. U Ciebie w metodzie ostatniego eventu