Laden...

Forenbeiträge von Elophant Ingesamt 6 Beiträge

18.03.2006 - 13:13 Uhr

Hallo,

ich habe eine DataGridView, welche ich an eine List<ContentItem> gebunden habe.

Ein ContentItem hat die folgenden 4 Attribute (für die jeweils auch Properties definiert wurden):


private int id;
private string type;
private string description;
private string url;

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!

Philipp

14.03.2006 - 23:05 Uhr

Hallo zusammen,

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.

Lieben Gruß
Philipp

26.02.2006 - 17:49 Uhr

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.

25.02.2006 - 18:28 Uhr

Hallo,

ich habe ein eigenes Control erstellt, welches von TreeView erbt:

public class MyTreeView : TreeView

Diese MyTreeView wird auf einer Form namens "MyEditor" angezeigt.

public class MyEditor : Form

Ich möchte in der Klasse MyTreeView gerne einen Konstruktor haben, der eine Referenz auf die Form "MyEditor" übergeben bekommt.


public MyTreeView(MyEditor editor) : base()
{
    this.editor = editor
    ...
}

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?

Besten Dank im Voraus!

Philipp

21.02.2006 - 21:12 Uhr

Hi herbivore!

Besten Dank für den Tipp... jetzt funktioniert's.

Hintergrund war folgender:
ich wollte eine Dragging-Operation abbrechen, sobald die Maus aus dem MDI Child Fenster herausbewegt wird 🙂

Gruß
Philipp

21.02.2006 - 16:59 Uhr

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?

Danke!