Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Aufruf einer WIndows-Form aus der Konsole
v1vec
myCSharp.de - Member



Dabei seit:
Beiträge: 52

Themenstarter:

Aufruf einer WIndows-Form aus der Konsole

beantworten | zitieren | melden

Hallo

Ich verwende Visual Studio C# 2008 Express Edition und hab ein Konsolenprogramm erstellt das eine ebenfalls in dem Projekt enthaltene Form aufrufen soll. Der Aufruf an sich funktioniert auch ohne probleme, allerdings ist die Form dann immer im Hintergrund was sehr unschön ist - zumal die Konsole während der Zeit eh blockiert ist (was auch in meinem sinn ist). Der Dialog soll dazu verwendet werden das ergebnis der vorherigen berechnungen graphisch darzustellen. Auch das setzen der TopMost Variable in der Form hat nix gebracht.

Mein Code sieht derzeit so aus (gekürzt):


Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

Form1 F = new FormXY();
            
Application.Run(F);

Hat jemand ne idee woran das hängt und wie ich die form in den vordergrund bekomme ?
private Nachricht | Beiträge des Benutzers
Killerkrümel
myCSharp.de - Member



Dabei seit:
Beiträge: 166
Herkunft: Hamburg

beantworten | zitieren | melden


F.StartPosition = FormStartPosition.CenterScreen;

//Und wenn du es als Modales Fenster haben willst, 
F.ShowDialog();



AFAIK müsste das so funktionieren...
Gruß Killerkruemel
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Killerkrümel am .
private Nachricht | Beiträge des Benutzers
v1vec
myCSharp.de - Member



Dabei seit:
Beiträge: 52

Themenstarter:

beantworten | zitieren | melden

danke schonmal, leider gehts aber trotzdem nich

der dialog is dann zwar in der mitte des bildschirms aber immernoch hinter der Konsole

Ich hab zum test mal folgendes gemacht (um es besser nachvollziehbar zu machen):
- Neues Projekt -> Konsolenanwendung
- Dem Projekt eine Form hinzugefügt (Form1)
- using Verweis hinzugefügt (System.Windows.Forms)
- in die Main funktion folgenden Code geschriebe:

Form1 F = new Form1();
F.StartPosition = FormStartPosition.CenterScreen;
F.ShowDialog();

das ergebnis is das die konsole zwar anhält bis ich die form schließe, aber die form bleibt beim start in hintergrund

hab ich vllt irgendwas vergessen ? X(

ps: weder F.TopLevel noch F.TopMost ändern da was dran
private Nachricht | Beiträge des Benutzers
Killerkrümel
myCSharp.de - Member



Dabei seit:
Beiträge: 166
Herkunft: Hamburg

beantworten | zitieren | melden

Versuch mal F.Focus()
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Killerkrümel am .
private Nachricht | Beiträge des Benutzers
v1vec
myCSharp.de - Member



Dabei seit:
Beiträge: 52

Themenstarter:

beantworten | zitieren | melden

also das is alles sehr seltsam

(F.Focus() bringt leider auch keinen Erfolg, wahrscheinlich deshalb weil das Fenster davon ausgeht das es den Focus hat (wird auch als aktiv gezeichnet))

nach ner weile googlen hab ich rausgefunden das es einen bug im visual studio gibt der genau dieses verhalten (form hinter konsole) hervorruft wenn man das programm direkt aus der entwicklungsumgebung aufruft

allerdings ist das nicht alles, dieses verhalten tritt für den fall das man das programm direkt aus dem ordner aufruft auch dann auf wenn man zuvor einen Read befehl ausgeführt hat

folgendes funktioniert also richtig (wenn man es aus dem ordner aufruft

static void Main(string[] args)
{
Form1 F = new Form1();
F.ShowDialog();
}

das hingegen nicht:

static void Main(string[] args)
{
Console.ReadKey();
Form1 F = new Form1();
F.ShowDialog();
}

sinn macht das ja keinen - leider brauch ich aber ReadLine() und ReadKey()
falls jemand also ein workaround weiß - immer her damit
ansonsten schonmal danke, ich denke wir werden auf ein update des studios warten müssen -.-
private Nachricht | Beiträge des Benutzers
MDCoke
myCSharp.de - Member

Avatar #avatar-2784.jpg


Dabei seit:
Beiträge: 109
Herkunft: Magdeburg

beantworten | zitieren | melden

und wenn du die form topmost machst?
private Nachricht | Beiträge des Benutzers
v1vec
myCSharp.de - Member



Dabei seit:
Beiträge: 52

Themenstarter:

beantworten | zitieren | melden

also irgendwie wird das alles immer seltsamer:
wenn ich topmost schon im vorhinein oder mit dem OnLoad-Ereignis setze passiert nichts (bzw. genau das gleich wie als hätt ich es nich gesetzt) - setze ich topmost hingegen erst (oder wieder) wenn das fenster aktiv ist (z.B. durch OnClick) funktioniert es
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo v1vec,

seltsam schon, aber ein Workaround ist doch damit trotzdem möglich, oder nicht?

herbivore
private Nachricht | Beiträge des Benutzers
vbprogger
myCSharp.de - Experte

Avatar #avatar-1820.gif


Dabei seit:
Beiträge: 1.696
Herkunft: NRW/DE

beantworten | zitieren | melden

Hallo v1vec,

ich weiss nicht was du hast, aber ich habe grad probiert und es funktioniert ohne Probleme: im VS eine ConsoleAnwendung erstellt, dann eine Form dazu, in Program.cs:


using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadKey();
            Form1 f = new Form1();
            f.ShowDialog();
        }
    }
}
et voilà, Form1 kommt sofort und ist im Vordergrund es hat nur nicht den Focus, oder verstehe ich dich was falsch?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von vbprogger am .
Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.
---------
Bemerkung: ich beantworte keine Fragen via PM, denn das Forum soll ja was davon haben!
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

Ich find Konsole-Anwendungen eh ziemlich Benutzerfeindlich.
Und wennde ein Form anzeigst, musste die WinFormLib sowieso laden.
Da könnte man doch auch gleich eine ordentliche Anwendung von machen?
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
Killerkrümel
myCSharp.de - Member



Dabei seit:
Beiträge: 166
Herkunft: Hamburg

beantworten | zitieren | melden

Bei mir das gleiche wie beim vbprogger.... Consolenapp erstellt und die Form springt bei aufruf inFocus.... vllt hat dein studio n schluckauf oder so -
wenn die maße passen, warum ordnest du console und window nicht einfach nebeneinander an?
private Nachricht | Beiträge des Benutzers
v1vec
myCSharp.de - Member



Dabei seit:
Beiträge: 52

Themenstarter:

beantworten | zitieren | melden

danke für eure hilfe

letztendlich lags wohl doch an dem visual studio - bei einem anderen projekt gings nämlich später als ichs nochmal probiert hatte - hab nur vergessen hier nochmal zu schreiben ;)

gruß

v1vec
private Nachricht | Beiträge des Benutzers