29.11.2012 Aufrufe

combit List & Label - Programmierer-Referenz - combit GmbH

combit List & Label - Programmierer-Referenz - combit GmbH

combit List & Label - Programmierer-Referenz - combit GmbH

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

OpenFileDialog dialog = new OpenFileDialog();<br />

dialog.Filter = "JPEG files (*.jpg)|*.jpg|All files (*.*)|*.*";<br />

if(desobj.ObjectProperties.Contains("imagefile"))<br />

dialog.FileName = desobj.ObjectProperties["imagefile"].ToString();<br />

if(dialog.ShowDialog(e.DesignerWindow) == DialogResult.OK)<br />

{<br />

desobj.ObjectProperties["imagefile"] = dialog.FileName;<br />

e.HasChanged = true;<br />

}<br />

}<br />

Arbeiten mit der .NET Komponente<br />

Wählt der Benutzer eine Datei aus, so wird der Dateiname in einem Dictionary abgelegt.<br />

Dieses Dictionary (IDictionary) wird von der Komponente über die Eigenschaft ObjectProperties<br />

angeboten. Es ist wichtig, die Daten hier und nicht an anderer Stelle abzulegen,<br />

da diese innerhalb der Projektdatei abgespeichert werden (müssen). Hierzu wird<br />

das Dictionary beim Speichern des Projekts im Designer serialisiert und beim Öffnen<br />

wieder deserialisiert. Es ist erforderlich, dass alle im Dictionary abgelegten Daten serialisierbar<br />

sind. Hierzu müssen diese zumindest mit dem Attribut Serializable versehen<br />

werden. Die Standard-Wertetypen der Common Language Runtime (string, int und so<br />

weiter) sind bereits von Haus aus serialisierbar und können somit ohne weiteres verwendet<br />

werden. Intern wird ein BinaryFormatter verwendet, dessen Ergebnis MIMEkodiert<br />

in der Projektdatei abgelegt wird.<br />

Haben Sie beziehungsweise der Benutzer innerhalb des EditDesignerObject-Ereignisses<br />

Änderungen am Objekt oder dessen Eigenschaften vorgenommen, müssen Sie <strong>List</strong> &<br />

<strong>Label</strong> dies mitteilen. Dies ist notwendig, damit gegebenenfalls beim Beenden des Designers<br />

eine Speichern-Abfrage angezeigt wird. Setzen Sie im Falle einer Änderung einfach<br />

die Eigenschaft HasChanged der Ereignisargumente auf true.<br />

Nachdem der Benutzer das Objekt editiert hat, werden Sie von <strong>List</strong> & <strong>Label</strong> aufgefordert,<br />

das Objekt darzustellen. Es wird hierzu das Ereignis DrawDesignerObject ausgelöst.<br />

Über die Ereignisargumente erhalten Sie ein Graphics-Objekt sowie das Rechteck des<br />

Objekts. Sie können nun mit den bekannten Methoden der GDI+ im Arbeitsbereich<br />

zeichnen. Hierbei ist selbstverständlich auch der Zugriff auf die hinterlegten Objekteigenschaften<br />

möglich beziehungsweise sinnvoll. Das Beispiel zeigt die Darstellung der<br />

weiter oben ausgewählten Grafikdatei.<br />

private void designerObject1_DrawDesignerObject(object sender,<br />

DrawDesignerObjectEventArgs e)<br />

{<br />

DesignerObject desobj = (DesignerObject) sender;<br />

if(desobj.ObjectProperties.Contains("imagefile"))<br />

{<br />

string imagefile = desobj.ObjectProperties["imagefile"].ToString();<br />

e.Graphics.DrawImage(new Bitmap(imagefile), e.ClipRectangle);<br />

97

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!