Application verliert Fokus wegen MoveFile

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Application verliert Fokus wegen MoveFile

    Hallo zusammen,

    ich lese schon seit einiger Zeit hier mit und konnte einige nützliche Tricks finden. Erst mal vielen Dank dafür :) .
    Jetzt stehe ich vor einem Problem, zu welchem ich nichts gefunden habe und deswegen versuche ich es hier mit meinem ersten Post ^^ .

    Ich habe eine Windows Forms Applikation in VB.NET, in der ich unter anderem eine Datei umbenenne und verschiebe.

    VB.NET-Quellcode

    1. My.Computer.FileSystem.MoveFile(filename, newfilename, FileIO.UIOption.AllDialogs, FileIO.UICancelOption.ThrowException)


    Das funktionierte bisher sehr gut (Windows7-PC). Jetzt soll die gleiche Applikation auf einem Windows10-PC laufen. Hier verliert aber das Programm den Fokus auf das Fenster, d.h. die Schrift in der obersten Titelzeile ist grau und meine Tastatureingaben werden ignoriert, obwohl der Cursor im richtigen Textfeld blinkt. Dann muss auf das Fenster geklickt werden, damit Eingaben wieder möglich sind, was in der Praxis ein großes Problem ist, da normalerweise nur Barcodes eingelesen werden und der Bediener keine Maus oder Tastatur zur Verfügung hat.

    Wie kann ich das beheben? Könnt Ihr mir bitte weiterhelfen?

    Vielen Dank für Eure Hilfe :) ,
    Stephan

    PS: Sorry, falls ich nicht die richtigen Fachbegriffe verwende, da ich kein "gelernter" Programmierer bin.
    Willkommen im Forum.
    Nutze IO.File.Copy(filename, newfilename). Da kann ich keinen Focusverlust feststellen. Aber bei Deiner Variante habe ich bei einer kleinen Testdatei auch nur einen Focusverlust von 0,1 Sekunden. Aber er ist da. Alternativ könntest Du auch, wenn Du Deine Copy-Prozedur aufrufst, ein Flag setzen, dass bei TextBox-Focusverlust, diesen wiederherstellt. Klar, was ich meine? Ist zwar nur ein Hack, aber er funktioniert.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Super, vielen Dank, IO.File.Copy(filename, newfilename) bzw. in meinem Fall Move funktioniert. :thumbsup:

    Die Alternative hätte ich selbst schon versucht, hat bei mir aber auch nicht funktioniert. Ich verlor aber nicht den Focus auf die TextBox, sondern auf die gesamte Anwendung und war dann auf einmal im Word oder was auch immer die zuletzt benutze Anwendung war :S . Aber egal, ich verwende einfach Deine Lösung.
    Willkommen im Forum. :thumbup:

    StephanZ schrieb:

    da normalerweise nur Barcodes eingelesen werden und der Bediener keine Maus oder Tastatur zur Verfügung hat.
    Wenn Du den Treiber für den Barcodescanner als RS232-Gerät betreibst (musst Du mal beim Hersteller fragen), kommt die Eingabe immer da an, wo sie hingehört, unabhängig davon, ob einer auf diesem PC mit Word einen Brief schreibt.
    Du ziehst ein SerialPort auf Deine GUI, initialisierst das Port und bekommst im DataReceived-Event Deine Daten, allerdings in einem anderen Thread, so dass Du invoken musst.
    Feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!