Anzeige messagebox in der dll-Bibliothek
Ich Schreibe eine dll-Bibliothek (zum Beispiel für die überprüfung der login-Daten eines Benutzers) und ich möchte, um pop-up ein Dialogfeld oder ein Informations-dialog, in den Prozess, zum Beispiel
"Are you sure you want to continue? (Yes/No/Cancel)"
aus irgendeinem Grund. Zurzeit bin ich brauche diese für eine Anwendung in Winforms und ich möchte es zu verwenden dll für meine anderen webforms Anwendungen auch. Kann jemand Anleitung wie es zu erreichen? Brauchen weniger zu sagen, ich will nicht Referenz System.Windows.Forms
oder System.Web
. Kann irgend jemand mir einige Hinweise? Ich bin mit .net 4.0
Ich will nicht für die Veröffentlichung/Abonnement von Ereignissen, wie ich bin nicht sehr vertraut mit cab-Architektur.
BEARBEITEN
Ich habe eine dll für die Erstellung einer Datenbank zur Laufzeit einer Anwendung. Also meine dll in der Regel überprüft, ob die Datenbank existiert bereits und ist bis zu Datum oder nicht, wenn es dann stoppen. Aber wenn es nicht vorhanden ist oder nicht bis zu Datum, dann möchte ich den Benutzer Fragen, wenn er will, aktualisieren Sie es jetzt oder später. Wenn der Benutzer jetzt sagt, update es und sagt nachher weiterhin Anwendung. Es ist nur ein Beispiel und alle relevanten Informationen auf dieser, ist willkommen.
Dank.
- Auch können Sie auf VisualBasic.Interop ... Aber ich denke, das wird nicht genügen, die Sie entweder, hab ich Recht?
- Sie können möglicherweise Ansicht ein Fenster in einem nicht-Fenster-Umgebung ohne Verwendung von Fenster-unterstützende Bibliotheken zur Verfügung.
- Nun, ich denke, das ist, warum wir haben
Confirm
für web - Ja, aber wie würden Sie sagen, innerhalb der DLL, wenn Sie sind in der web oder nicht, und wie würde Sie warten auf die Rückkehr des einen javascript-client confirm () - Aufruf innerhalb einer call-in-einer DLL innerhalb einer webform Projekt?
- Wenn Sie möchten
MessageBox
müssen SieSystem.Windows.Forms
. Wenn Sie möchten, web-Steuerelemente, die Sie brauchenSystem.Web
. Warum die Abneigung gegen das verweisen auf diese? - Sie konnten ein Ereignis auslösen oder eine Ausnahme. Ereignis ist der bessere Weg.
- Werden Sie sicher, dass die Schlüssel zu den server-Raum leicht zugänglich sind. Mit einem DLL-erraten Sie die richtige Benutzer-Schnittstelle ist eine verlustreiche Angelegenheit. Ein Ereignis auszulösen, statt.
- wenn ich sage, web-und winforms -, ich möchte nur sagen, dass andere Plattformen (wie windows phone auch), aber werden halten deine Idee in Verstand
- siehe edit
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie wirklich nicht. Diese gehören nicht in eine Bibliothek, aber getan werden sollte, in den Anwendungen, die diese Bibliothek statt.
Wo eine WinForms-Anwendung könnte es lösen, indem eine
MessageBox
eine web-Anwendung könnte die Anforderung durchzuführen, ohne zu Fragen nach einer erfolgreichen POST (da ein POST in der Regel zeigt die Absicht zum ändern einer Ressource).Wenn zum Beispiel Ihre Bibliothek wird verwendet für die Anmeldung, einfach werfen ein
AuthenticationException
, so dass die client-Anwendung (egal ob WinForms, web, oder was auch immer) fangen können, und Anzeige der entsprechenden Nachricht.Als für Ihre edit:
Warum nicht, legen zwei Methoden, wie
IsDatabaseUpToDate()
undUpdateDatabase()
? Dann können Sie den client-Aufruf der ersten Methode. Wenn es false zurück, Fragen Sie den Benutzer (sei es mit einer MessageBox, wird ein HTML-Formular ein JavaScript-Alert, eine einfache ja-Taste oder eine blinkende Kachel), ob Sie möchten, um die Datenbank zu aktualisieren. Wenn ja, rufen Sie dieUpdateDatabase()
Methode und Sie sind bereit zu gehen.ShowPopup
) und Ihre form implementieren diese Schnittstelle. Umsetzung vonShowPopup
sollteMessageBox.Show
. Dann rufen SieShowPopup
aus der Bibliothek, und Sie getan. Wenn immer noch nicht klar......lassen Sie mich wissen,Zu diesem Zweck müssen Sie der rechten Maustaste auf das Projekt und wählen Sie "Verweis Hinzufügen", dann wählen Sie die ".NET" - Registerkarte, und klicken Sie auf "System.Windows.Formen". Dann sollte diese Arbeit innerhalb des .dll:
Natürlich ist dies eine schlechte Idee für den original-poster (im Rahmen CodeCaster).