6 Stimmen

Benutzerdefinierten Cursor aus Ressourcendatei festlegen

In meinem VB.net-Projekt habe ich einen benutzerdefinierten Cursor (Window.cur) erstellt. Wie kann ich diesen dem Cursor zuweisen, ohne den vollständigen Dateipfad zu dieser Datei verwenden zu müssen?

VB.Net hat My.Resources, aber es zeigt nicht die Cursor, die in das Projekt eingebettet sind.

Ich habe ein Beispiel gefunden, das den folgenden Code verwendet:

New Cursor(Reflection.Assembly.GetExecutingAssembly.GetManifestResourceStream("Window.cur")  

aber das funktioniert nicht.

10voto

Hans Passant Punkte 894572

Es kann schwierig sein, den Namen der Ressource zu erraten. Um das herauszufinden, führen Sie Ildasm.exe in Ihrem Programm aus. Doppelklicken Sie auf "Manifest" und suchen Sie die .mresource.

Eine andere Möglichkeit, die keine Vermutungen zulässt: Projekt + Eigenschaften, Registerkarte Ressourcen. Klicken Sie auf den Pfeil auf der Schaltfläche "Ressource hinzufügen", Vorhandene Datei hinzufügen und wählen Sie Ihre .cur-Datei aus. Ihr Code muss wie folgt aussehen:

Dim ms As New System.IO.MemoryStream(My.Resources.Cursor1)
Button1.Cursor = New Cursor(ms)

1voto

KerryF Punkte 73

Vielen Dank für die Hilfe! Ich nahm an, dass, wenn ich die Ressource in der Visual Studio-IDE erstellt, würde es zu meinem Projekt hinzufügen. Wie dumm von mir!

Ich musste auf die Registerkarte "Projekt" gehen, um die Datei "Window.Cur" mit "Add Resource" hinzuzufügen (danke, nobugz!) und dann den von ihm erwähnten Code verwenden:

Dim ms As New System.IO.MemoryStream(My.Resources.Window)

Button.Cursor = New Cursor(ms)

0voto

Otávio Décio Punkte 72052

Es fehlt der Namespace. Sie wollen wahrscheinlich verwenden:

MyNamespace.MySubfolder.Window.cur

EDIT: Stellen Sie außerdem sicher, dass Ihre Build Action für das Element "Embedded Resource" lautet, da es sonst nicht in Ihre dll/exe aufgenommen wird.

0 Stimmen

Ocdecio: Könnten Sie bitte etwas genauer werden? Ich habe alle Variationen ausprobiert, die mir einfielen, mit dem, was Sie erwähnt haben. VB.Net hat keinen MyNamespace, soweit ich sehen kann (natürlich könnte ich falsch sein).

0voto

user50612 Punkte 3048

Angenommen, Sie weisen "Cursor1.cur" als Cursor für das Steuerelement "Button1" zu.

In Ihrem Form.Load-Ereignis würden Sie etwas tun wie -

Button1.Cursor = New Cursor(Me.GetType(), "Cursor1.cur")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X