etwas was in runden Klammern eingeschlossen ist heisst
genau das was darin enthalten ist muss genau in der Reihenfolge Zeichen für Zeichen stehen der Senkrecht strich verbindet beider Patterens wahlweise
mfg
Hier der verbesserte Code des Hauptfenster
namespace _2FormsVisibleChange
{
/// <summary>
/// Zusammenfassung für Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
// unser Nebenfenster
private Form2 frm2;
private System.Windows.Forms.Button button1;
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
private System.ComponentModel.Container components = null;
#region Vom Designer erzeugter Code
public Form1()
{
//
// Erforderlich für die Windows Form-Designerunterstützung
//
InitializeComponent();
//
// TODO: Fügen Sie den Konstruktorcode nach dem Aufruf von InitializeComponent hinzu
//
}
/// <summary>
/// Die verwendeten Ressourcen bereinigen.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Vom Windows Form-Designer generierter Code
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(8, 8);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(112, 24);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 267);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Fenster 1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
#endregion
// macht dieses Fenster unsichtbar und das Nebenfenster sichtbar
private void button1_Click(object sender, System.EventArgs e)
{
// unser Nebenfenster
Form2 frm2 = new Form2(this);
// ebenfenster sichtbar machen
frm2.Show();
// Hauptfenster verstecken
this.Visible = false;
}
}
}
So nun nochmal der Code des Nebenfenster
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace _2FormsVisibleChange
{
/// <summary>
/// Zusammenfassung für Form2.
/// </summary>
public class Form2 : System.Windows.Forms.Form
{
// Hier wird der Verweis auf das Hauptfenster gespeichert
private System.Windows.Forms.Form parent;
private System.Windows.Forms.Button button1;
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
private System.ComponentModel.Container components = null;
// wichtig bekommt einen Verweis auf das Hauptfenster
public Form2(System.Windows.Forms.Form parent)
{
//
// Erforderlich für die Windows Form-Designerunterstützung
//
InitializeComponent();
//
// TODO: Fügen Sie den Konstruktorcode nach dem Aufruf von InitializeComponent hinzu
//
this.parent = parent;
}
/// <summary>
/// Die verwendeten Ressourcen bereinigen.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Vom Windows Form-Designer generierter Code
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(8, 8);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(112, 24);
this.button1.TabIndex = 1;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form2
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 267);
this.Controls.Add(this.button1);
this.Name = "Form2";
this.Text = "Fenster 2";
this.ResumeLayout(false);
}
#endregion
// hier wird dieses Nebenfenster wieder unsichtbar und stattdessen das hauptfenster wieder sichtbar
private void button1_Click(object sender, System.EventArgs e)
{
// Hauptfenster sichtnar machen
this.parent.Visible = true;
// dieses Nebenfenster was eigentlich nen Dialog ist, als diesen
// auch beenden
this.Close();
}
}
}
Und wie gesagt sollen beide Fenster als wirklich eigenständige Anwendung laufen
dann musst Du meinen geschilderten Pseudocode konkret umsetzen
mfg
@User6457585668679987:
Ich habe auch schon in der Hilfe nachgeguckt, und auch das gleiche gefunden wie du. Problem ist nur, dass diese Hilfe sich auf einen OpenFileDialog bezieht, und nicht auf einen SaveFileDialog. Ich habe auch einen OpenFileDialog in meiner Anwendund, bei dem das so klappt. Das hilft mir allerdings beim Speichern nicht weiter.
Danke!
Habe auch noch eine Möglichkeit gefunden. Ich habe einfach die Funktionen in der Childform implementiert und darin auch ein MainMenu eingerichtet (Die Funktionen sollen sowieso alle über das MainMenu erreichbar sein). Und nun "Merge" ich die Menüs der Parent und der Childform einfach wie gewünscht zusammen - das war's auch schon. Ist recht einfach, dafür sind die Funktionen aber auch in der Childform und nicht in der Parentform. So werden diese Funktionen wohl für jede Childform neu erzeugt, also nur etwas wenn man genug RAM hat, bzw. einem das egal ist.
Sebo
Doch, notfalls mit ner Schleife die einzelnen Elemente durchgehen, aber das wird er ja wohl grad noch selber schaffen, wenn nicht: Programmieren an den Nagel hängen scherz.
Gruß c
Hi,
ich habe bislang nur unter Windows mit Visual Studio .net in C# programmiert, aber da ich eigentlich Linux so wie so viel besser leiden kann, wollte ich nun mono und monodevelop mal ausprobieren. Hat vielleicht schon jemand Erfahrung mit mono und der Entwicklungsumgebung monodevelop?
Ich habe mir über Portage mono-1.0.5-r5 runtergeladen und kompiliert, aber ich habe eben auf der mono-Homepage gesehen, dass Version 1.1 nun auch schon stable sein soll (Alledings ist da das Portage-Repository anderer Meinung). Kann mir vielleicht jemand sagen wie stable mono-1.1 wirklich ist? Und stimmt es dass mono-1.1 nun auch Windows.Forms unterstützt? Und gibt es sonnst noch irgend einen Grund für den es sich lohnt mono-1.1 anstatt 1.0 einzusetzen oder andersrum?
monodevelop ist laut Portage ebenfalls unstable, was man allerdings nicht immer so wörtlich nehmen darf. Jedoch hatte ich mit monodevelop 0.7 unter Debian schonmal tatsächlich Probleme. Kann mir vielleicht jemand einen Rat geben mit welcher Version von momonodevelop man am besten arbeiten kann? Welche für mono-1.0 und welche für mono-1.1 am besten geeignet ist?
Danke.
Gruß
Schrankwand
Eigentlich hast du recht, Optimizer, "wirkliche" Schleifen bestehen aus etwas mehr Code als nur einer Addition, sodass der Unterschied zwischen for und foreach nicht mehr so ins Gewicht fällt.
ich denke Du bist ein liebenswürdiger gemütlicher Mensch, nee jetzt wirklich im ernst!
Aber mal was anderes, ich beschäftige mich jetzt seid ca 2 1/2 Monaten mit .NET,
hauptsächlich mit VB und C# wirklich geil dies Teil. Und diese Technologiebeispiele
in der MSDN und in den Microsoft Press - Büchern sind schon echt was feines.
Und der Oberhammer ist meiner Meinung diese Interoperabilität! Die ganze Software
von Microsoft und manche die unter Windows läuft und nicht speziell von Microsoft,
stellt halt über die COM - Technologie Schnittstellen nach aussen bereit.
Man kann somit das gesamte Office - Paket durch nen anderes Programm von aussen steuern etc. sehr nett .
mfg sclearscreen
oh mann, ich sehe schon, keiner weiß bescheid.
Das Problem bestand nun darin, dass die Verbindung zum Server länger als die verwendete Zeit benötigte, dadurch wird ständig eine neue Verbindung geöffnet ohne die alten jemals zu schließen. Das Problem habe ich nun gelöst, indem ich ein TimeOut hinzugefügt habe und wo ich vorher auf einen WebRepsonse verzichtt habe, verwende ich nu diesen, um den Puffer zu leeren und die Infos abzuholen, die sonst erhalten bleiben würden und im Grunde nicht mehr als 5 solche Request offen sein können.