Hallo zusammen,
wenn ich in VB.NET einen CommonOpenFileDialog in einer asynchronen Prozedur stehen habe, muss ich bekanntlich so etwas tun:
also
Nach C# übertragen wird das nicht akzeptiert. Was mache ich falsch? Ich denke, der Aufruf in
wenn ich in VB.NET einen CommonOpenFileDialog in einer asynchronen Prozedur stehen habe, muss ich bekanntlich so etwas tun:
VB.NET-Quellcode
- Dim Pfad As String
- Using OFD1 As New CommonOpenFileDialog
- OFD1.Title = "Exceldatei auswählen"
- OFD1.Filters.Add(New CommonFileDialogFilter("Excel", ".xlsx, .xls"))
- If System.IO.Directory.Exists("C:\Users\Name\source\repos\VB.NET\bla") Then
- OFD1.InitialDirectory = "C:\Users\Name\source\repos\VB.NET\bla"
- Else
- OFD1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
- End If
- Dim Result As CommonFileDialogResult
- Me.Invoke(Sub() Result = OFD1.ShowDialog())
- If Result = CommonFileDialogResult.Ok Then
- Pfad = OFD1.FileName
- Else
- Return
- End If
- End Using
also
Result
wird separat gespeichert, anstatt, wie in einer synchronen Prozedur möglich, direkt If OFD1.ShowDialog = CommonFileDialogResult.Ok Then
zu schreiben.Nach C# übertragen wird das nicht akzeptiert. Was mache ich falsch? Ich denke, der Aufruf in
Invoke
ist falsch?!C#-Quellcode
- string FullFileName;
- using (CommonOpenFileDialog OFD = new CommonOpenFileDialog())
- {
- OFD.Title = "Textdatei mit Datenbank-Informationen öffnen";
- OFD.Filters.Add(new CommonFileDialogFilter("Textdatei", ".txt"));
- if (System.IO.Directory.Exists(@"C:\Users\Name\xyz"))
- OFD.InitialDirectory = @"C:\Users\Name\xyz";
- else
- {
- OFD.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
- }
- CommonFileDialogResult Result;
- this.Invoke(new Action(() => Result = OFD.ShowDialog()));
- if (Result == CommonFileDialogResult.Ok)
- FullFileName = OFD.FileName;
- else
- return;
- }