HAllo,
mein problem ist, dass ich zwischen twei Formen hin und her wechsel möchte.
Dabei soll jeweil die eine Form sichtbar sein und die andere nicht.
bisher:
Application.Run(new frmMain());
public partial class frmMain : Form
{
....
public frmZwei nfrmZwei = null;
...
public frmMain()
{
InitializeComponent();
this.Hide();
nfrmZwei = new frmZwei();
nfrmZwei.ShowDialog();
}
private void beendenToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Hide();
nfrmZwei.ShowDialog();
}
in der zweiten Form
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
Leider funktioniert das ganze nur einmal.
Form zwei wird angezeigt
Form eins wird angezeigt und form zwei geschlossen
form zwei wird angezeigt und Form ein geschlossen
ab jetzt nix mehr ???
Könnte mir den jemand helfen?
Besten Dank
Dirk
moin,
so kann das auch nicht funktionieren
ich denke mal da haste was falsch verstanden
für solche spielereien brauchst du eine Art FormManger
class Programm{
static void Main(string[] args) {
FormManager app = new FormManger();
app.Run(new FormManager());
}
}
public class FormManager{
Form1 frm1;
Form2 frm2;
public FormManager(){
frm1 = new Form1();
frm2 = new Form2();
frm1.VisibleChanged += new System.EventHandler(frm1VisibleChanged);
frm2.VisibleChanged += new System.EventHandler(frm2VisibleChanged);
}
public void Run(){
frm1.ShowDialog();
}
private void frm1VisibleChanged(object sender, EventArgs e) {
if (frm1.Visible == false) {
frm2.ShowDialog();
}
}
private void frm2VisibleChanged_VisibleChanged(object sender, EventArgs e) {
if (frm2.Visible == false) {
frm1.ShowDialog();
}
}
}
in den jeweiligen Forms dann beim beenden nur this.Hide(); und dan sollte das funktionieren
mfg
ACHTUNG dieser Code ist ungetestet
und wahrscheinlich gibt es auch andere möglichkeiten
Hallo,
besten Dank für die Antwort.
Ich habe aber, da es nicht ganz funktionierte, weiter experimentiert(mit Hilfe meines Kollegen).
Hier meine funktionierende Lösung
Programm
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
Form1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace zweiformen
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void beendenToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button1_Click(object sender, EventArgs e)
{
this.Hide();
Form2 frm2 = new Form2(1);
frm2.ShowDialog();
this.Show();
}
private void button2_Click(object sender, EventArgs e)
{
this.Hide();
Form2 frm2 = new Form2(2);
frm2.ShowDialog();
this.Show();
}
private void button3_Click(object sender, EventArgs e)
{
this.Hide();
Form2 frm2 = new Form2(3);
frm2.ShowDialog();
this.Show();
}
}
}
hier werden auch noch Parameter übergeben
Form 2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace zweiformen
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public Form2(int modus)
{
InitializeComponent();
this.Text += "Modus " + modus.ToString();
}
private void beendenToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
Besten Dank für die Hilfe
Gruß
Dirk
moin
damit wirste probleme bekommen
die einzelnen Forms werden nur unsichtbar gemacht sin aber immer noch vorhanden
und du erzeugst die objekte immer wieder neu
mfg
@blackcoin
Original von blackcoin
die einzelnen Forms werden nur unsichtbar gemacht sin aber immer noch vorhandenund du erzeugst die objekte immer wieder neu
Wieso? Form1 wird doch einmal erstellt und mit Show() und Hide() behandelt, Form2 wird immer neu erstellt aber auch mit Close() geschlossen. Wo ist das Problem?
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
sorry das hatte ich in der schnelle falsch gesehen
dann entschuldige bitte
mfg