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 ?
F.StartPosition = FormStartPosition.CenterScreen;
//Und wenn du es als Modales Fenster haben willst,
F.ShowDialog();
AFAIK müsste das so funktionieren...
Gruß Killerkruemel
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):
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 🙁
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 -.-
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
Hallo v1vec,
seltsam schon, aber ein Workaround ist doch damit trotzdem möglich, oder nicht?
herbivore
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?
**:::
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.
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?
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