Alle offenen Forms Refreshen

czemmel

Mitglied
Hallo und einen schönen guten Morgen,
habe folgendes Problem.
ich möchte alle meine offenen form´s nach einer Auswahl in einer ComboBox Refreshen. Hat jemand eine Vorschläge wie dies am einfachsten geht
 
Dazu kann man sich beispielsweise einen einfachen Manager bauen, der so aussehen könnte:

C#:
public class FormsManager
{
    #region Private Members

    private static object _lockObject = new object();
    private static FormsManager _instance = null;
    private List<Form> _formList = null;

    #endregion

    #region ctor

    private FormsManager() { }

    #endregion

    #region Public Methods

    public static FormsManager GetInstance()
    {
        lock (_lockObject)
        {
            if (_instance == null)
            {
                _instance = new FormsManager();
                _instance._formList = new List<Form>();
            }
            return _instance;
        }
    }

    public Form Show(Form form)
    {
        this._formList.Add(form);
        form.Show();
        return form;
    }

    public void ShowDialog(Form form, Form parent)
    {
        this._formList.Add(form);
        form.ShowDialog(parent);
    }

    public void Close(Form form) 
    {
        if (this._formList.Contains(form))
            this._formList.Remove(form);

        form.Close();
    }

    public void RefreshAll()
    {
        foreach (Form f in this._formList)
            f.Refresh();
    }

    #endregion
}
Über diesen werden nun alle Formulare geöffnet und geschlossen. Ebenso befindet sich darin die Methode RefreshAll um alle Formulare zu aktualisieren (sofern es mit einem normalen Refresh getan ist, sonst muss von Form abgeleitet werden).

Die Aufrufe sehen dann beispielsweise in der Program.cs so aus:
C#:
[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    FormsManager manager = FormsManager.GetInstance();

    Application.Run(manager.Show(new FormMain()));
}
Unter der Annahme, dass von FormMain ein weiteres Formular geöffnet wird, von welchem aus aktualisiert werden muss, dann sähe das so aus:
C#:
private void CloseButton_Click(object sender, EventArgs e)
{
    FormsManager manager = FormsManager.GetInstance();
    manager.Close(this);
}

private void RefreshButton_Click(object sender, EventArgs e)
{
    FormsManager manager = FormsManager.GetInstance();
    manager.RefreshAll();
}
Zu beachten ist, dass dieses Formular (in diesem vereinfachten Beispiel) zwei Buttons besitzt. Einmal für die Aktualisierung und einmal um zu zeigen, wie das Formular geschlossen wird.
 
Danke für die Hilfe:eek:
in Vb2005 funktioniert irgendwie nicht so richtig

hab das folgendermaßen probiert und es tut sich nichts:

For Each Frm As System.Windows.Forms.Form In System.Windows.Forms.Application.OpenForms
Frm.Refresh()

Vielleicht ist Refreshen nicht das richtige, denn es sollen die formen dann in einer neuen Sprache angezeigt werden
 
Zuletzt bearbeitet:
Zurück