Von besonderem Interesse ist das Feld "url". Darin steht eine URL, die zu dem Content (Inhalt) führt, z. B. http://localhost/contents/doc1.pdf.
In der DataGridView, in der ich die einzelnen ContentItem-Objekte anzeige, wird dieses Feld in einer DataGridViewLinkColumn angezeigt. In den Zellen dieser Spalte steht dann auch schön immer die komplette URL.
Was ich jetzt gern hätte, ist, dass er mir in den Zellen dieser Spalte stets "LINK" anzeigt und ich die URL quasi dahinter "verstecke".
Wie könnte man das realisieren? Ich hatte schon daran gedacht, dass irgendwie übers Formatieren der Zellen zu machen (schließlich hat eine Zelle die Properties "Value" und "FormattedValue"). Aber bei Formatieren muss man einen Format-String angeben.. aber ich will ja quasi, dass er mir jede URL als "LINK" formatiert :-)
Vielen Dank schonmal im Voraus für jegliche Antwort!
ich bin mir nicht ganz sicher, wie ich aus einer DataGridView einen Hyperlink öffnen soll.
Entsprechend der MSDN-Hilfe sieht mein Lösungsansatz vor, die Zelle bzw. die Spalte in der der Hyperlink (die Hyperlinks) stehen, als DataGridViewLinkCell bzw. DataGridViewLinkColumn zu formatieren.
Weiterhin sagt die MSDN-Hilfe, man soll dann das CellContentClick-Event handlen, um den Hyperlink im Browser zu öffnen.
Den Browser kann man anscheinend mit
System.Diagnostics.Process.Start(URL);
öffnen, wobei URL ein String der Form "http://..." bzw. "www...." ist.
Ist der Ansatz richtig, in dem Event-Handler für das CellContentClick-Event einfach den Inhalt der Zelle als String auszulesen und als Parameter in obiger Anweisung zu übergeben?
Habe das noch nicht ausprobiert, wollte erstmal fragen... nicht dass ich in eine falsche Richtung denke.
Das habe ich bereits probiert, aber auch da meckert er mit der gleichen Exception.
Vielleicht nochmal zur Klarstellung: Ich verändere bewusst den Designer-generierten Code indem ich beim Konstruktoraufruf für MyTreeView die this-Referenz (= Referenz auf MyEditor) übergebe.
Wenn ich übrigens im Konstruktor den Typ der Referenz nicht auf "MyEditor" sondern auf "Form" setze, dann klappt der Aufruf soweit. Aber im Konstruktor-Code selbst schreibe ich dann ja
this.myEditor = (MyEditor) myEditor
um die Referenz zu setzen. Den Cast muss ich durchführen, da im Konstruktorparameter ja der Typ "Form" steht.
Und wenn ich mir jetzt den MyEditor im Designer anschauen möchte, meckert er, dass er genau obigen Cast nicht durchführen kann.
Muss ich eigentlich beim parameterlosen Konstruktor auch den KOnstruktor der Oberklasse per :base() aufrufen? Das habe ich bisher immer so gemacht.
Im vom Designer generierten Code für den MyEditor wird wenn ich die MyTreeView auf die Form MyEditor ziehe, der parameterlose Konstruktur für MyTreeView aufgerufen.
Diesen Konstruktor möchte ich natürlich nicht aufrufen, sondern den mit der Referenz auf den MyEditor, also ... new MyTreeView(this);
Wenn ich das gemacht habe, dann kann ich MyEditor nicht mehr im Designer anzeigen lassen und es kommt folgende Exception:
Type "... .MyEditor" does not have a constructor with parameters of types Form"
Beim Builden hat er keine Probleme, auch wenn ich das Programm starte, läuft alles so, wie es soll (d. h. auch die MyTreeView hält schön eine Referenz auf den MyEditor).
Hat jemand eine Idee, wie ich es schaffe, dass der Designer den MyEditor richtig anzeigt?
Ich habe ein MDI Child Form, welches in der ClientArea seines MDI Parent Form angezeigt wird.
Ich möchte die Position des MDI Childs relativ zum Screen bekommen, aber die Property DesktopBounds liefert mir (0,0,xxx,yyy) zurück (xxx und yyy sind dabei die tatsächliche aktuelle Breite bzw. Höhe des MDI Childs), obwohl das Fenster eigentlich nicht am oberen linken Rand des Bildschirms positioniert ist, sonder eher mittig. Es scheint, als ob DesktopBounds die Positionsdaten relativ zum Parent-Anzeigebereich ermittelt.
Hat jemand eine Idee, wie ich an die absoluten (d. h. bezogen auf die Position relativ zu den Bildschirmrändern) Positionswerte für das MDI Child komme?