Ich würd mich freuen wenn einer den richtigen C# Code zur Verwendung posten könnte so das ich dadurch auch ein bissel C# lernen und die nächsten Klassen gleich mit der C# verwendung beschreiben kann.
Im Artikel Eigene Eventlogs schreiben habe ich beschrieben wie man die System-Eventlogs um eine Gruppe erweitert und anschließend in diese schreiben kann.
Um dies zu vereinfachen hab ich eine neue Klasse "EventLogWriter" meiner Klassensammlung hinzugefügt. Diese Klasse stell ich euch als Download zur Verfügung.
Als erstes etwas zur Verwendung der Klasse.
Ausgegangen bin ich von einem Formular "Form1" welches beim starten über zwei verschiedene Methoden einen Eintrag ins Eventlog schreibt.
Zuerst muss man sich natürlich die DLL downloaden und im Projekt referenzieren.
'Anschließend den Namespace Importieren
Imports Freakfabrik.Functions.System.Eventlogs
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles Me.Load
'Methode Nr.1
Dim objEventLogWriter As New EventlogWriter()
objEventLogWriter.ApplicationName = "MeineTestanwendung"
objEventLogWriter.EventLogName = "MeinEventlog"
objEventLogWriter.WriteToEventLog(
"Hier ein Beispieleintrag ins Log.", _
EventLogEntryType.SuccessAudit)
'Mehtode Nr.2
Dim objEventLogWriter2 As New EventlogWriter( _
"MeinEventlog", "Testanwendung")
objEventLogWriter.WriteToEventLog( _
"Hier ein zweiter Beispieleintrag ins Log.", _
EventLogEntryType.SuccessAudit)
End Sub
End Class
Beide Methoden füren zum selben Ziel.
Es wir eine neue Gruppe "MeinEventLog" zusätzlich zu den bereits vorhanden System-Eventlogs hinzugefügt (nur wenn es sie noch nicht gegeben hat). Anschließend werden jeweils ein Eintrag in diese neue Gruppe hinzugefügt.
Wichtig ist nur zu beachten das auf den folgenden Registryzweig Lesen bzw. Schreibrechte bestehen. Die läßt sich erreichen in dem Administrator- oder Hauptbenutzer-Rechte bestehen, oder die Rechte explizit gesetzt werden.
HKLM\System\CurrentControlSet\Services\EventLog
Weiter Informationen und den Download der Klasse gibt es hier: blog.freakfabrik.net - Klasse EventlogWriter
Microsoft verwendet in seinen Office-Produkten zur Beschreibung von Farben ein eigenes System. Insgesammt gibt es 58 Farben (wobei schwarz und weiß doppelt vorkommen). Jede dieser Farbe wird über einen eigenen Index angesprochen - den so genannten ColorIndex.
Das Problem dabei ist das dieser Color-Index nicht ohne eine Mapping-Tabelle in RGB oder in HTML-Farben (z.B: #FF00FF) umgewandelt werden kann. Zwar bietet Microsoft auch noch die Möglichkeit den Color-Wert der Spalte auszulesen doch dieser läßt sich eben so "bescheiden" in eine der beiden Formen umwandeln.
Was passiert im Hintergurnd?
Nun es wird beim Inizialisieren der Klasse eine Mapping-Tabelle angelegt. Mit der lassen sich die ColorIndex auf das unter HTML übliche Format #?????? mappen. Um nicht nocheine Mapping-Tabelle für die RGB-Farbwerte anlegen zu müssen werden die Farbwerte aus dem HTML-Format in RGB-Farben umgerechnet.
Das ist nicht weiter schwirig da die HTML-Farbwerte aus 3 Segmenten bestehen - #RRGGBB wobei RR für Rot, GG für Grün und BB für Blau stehen. Jede dieser 3 Segmente stellt eine hexadezimale Zahl dar. Diese in eine in einen RGB-Farbwert umzuwandeln ist nun nicht weiter schwierig.
Zur Verwendung:
Einfach den Namespace importieren und eine neue Instanz der Klasse "ColorIndexToRGBColor" anlegen. Wärend diese neue Instanz angelegt wird, wird die Mappingtabellen aufgebaut und kann sofort verwendet werden.
Nun einfach nur die passende Funktion aufrufen. Entweder "getHTMLColor" oder "getRGBColor". Je nachdem was man haben möchte.
Hier ein Codebeispiel:
Imports Freakfabrik.MSOffice.Drawing
[...]
Dim objColorConverter as new ColorIndexToRGBColor
Console.WriteLine(objColorConverter.getHTMLColor(10))
[...]
weiter Informationen und den Download gibt es hier: blog.freakfabrik.net - Klasse ColorIndexToRGBColor
ah cool, danke, hab #d zwar bei mir installiert (probeweise) aber die funktion kannte ich net, geschweigeden das #d sharpdevelop heist.
gruß floyd
Zum Punkt 1, das problem ist das es keine assymblies sind, es ist ein themplate für eine modufikation von Winforms.
zum punkt 2, was ist #d. kann bei google auf die schnelle nix dazu finden.
gruß floyd
Hi Leute,
nehmts mir bitte nicht übel. ich find c# garnet übel nur hab ich im moment keine zeit mein gesammtes projekt auf c# umzustellen. von daher such ich eine c# to Vb.net konverter der gleich ein ganz projekt und nicht nur einzele quellcodestückchen convertieren kann.
hab etwas quellcode aus netz den ich in meiner vb.net anwendung verwenden will, wäre cool wenn ihr mir helfen könntet.
hier der quellcode den ich übersetzten will
http://projectdistributor.net/GetFile.aspx?type=s&id=310&codewise=False
gruß floyd
Original von imagodespira
... der Style ist ein Vista nachbau, hab selbst auch mal versucht einen zu machen graphisch nicht das Problem, nur die Umsetzung dass es dann alles auch funktioniert ist schwierig (habe Stylebuilder mal probiert...) ..
ich wollt den style direkt in meine application einbauen. nur mit der titelleiste hab ich so meine probleme.
gruß floyd
hmm schade, hatte gehoft du es es selber gemacht 😠
Gruß Floyd
ne frage, hast du die titelleiste selber gebaut oder ist das ein fertiger windows/system-sytle?
gruß floyd
Original von Noodles
Ich bezeichne jede Zelle als Item, also meinte ich damit auch die SubItems.
Kann aber nicht jeder wissen oder???
Zumals Subitems nicht Items sind und sich daraus nicht erschließen läßt was du meinst.
Original von Noodles
Du musst es für jedes Item angeben.
Ne für jedes Subitem des Items wenn ich das Problem richtig verstanden habe.
ahhh, ja sorry hab nix verstanden muss ich aber auch net 😉 muss halt auch noch viel lernen 🙁
bye
dann trag doch als sender den MatchFinder ein. dann bescheist du ihn auch nicht 😉
Gruß Floyd
Der Abstand in Pixel würd sich doch mit dem Satz des Pytagoras berechnen lassen.
Dabei muss man unterscheiden welchen abstand man haben möchte: horizontal, vertikal oder diagonal.
Das sollte kein all zu großes mathematisches Problem darstellen.
Ist jetzt nur so ne Idee, korrigiert mich wenn ich falsch liegen.
Gruß Floyd
oky danke, habs hinbekommen. das tablelayout hat nur noch einen Bug
wenn man den CellBorder auf None stellt wird ein Vertikaler Scroller hinzugefügt, sobald man ihn auf singel oder etwas anderes stellt verschwindet er. nunja was solls. damit kann ich auch leben 😉
Original von herbivore
Hallo herbivore,du schriebst:
aber autoscroll oder scrollable gibt es nicht.
Dem habe ich widersprochen und aufgezeigt, wo es zu finden ist.herbivore
das ist mir schon klar, leider versteh ich net wie ich das umsetzten soll
Original von herbivore
Hallo Floyd,klar hat TableLayoutPanel die Eigenschaft Autoscroll.
Inheritance Hierarchy
System.Windows.Forms.Control
...System.Windows.Forms.ScrollableControl <- definiert Autoscroll
......System.Windows.Forms.Panel
.........System.Windows.Forms.TableLayoutPanel
tut mir leid, vieleicht bin ja blöde aber ich weiß net worauf du hinaus willst. 🙁
oky hab ich rausgefunden, muss nur rowscount um 1 erhöhen, wie bekomm ich jetzt zu der neuen zeile mein control rein?
gruß floyd
edit: oky dumm von mir, bin doch selber drauf gekommen.
TableLayoutPanel1.Controls.Add(..)
aber autoscroll oder scrollable gibt es nicht.
Original von kakaomilch
neue zeilen gehtscrollable auch
und wie? 😁 sorry finde aber rows nicht in der list der eigenschaften.
gruß floyd
Original von kakaomilch
Nur eine Idee:
Schaut nicht so listboxartig aus.. aber mit TableLayout kannst du auch 2 spalten und 2 zeilen machen..
Die idee ist zwar nicht schlecht nun meine Fragen:
Das ganze soll wie ne Listbox aussehen in der ich X beliebige Usercontrols speichern kann, von mir aus auch nur einspaltig.
Gruß Floyd
Schön das ihr meinen Beitrag lehst aber ne idee hat wohl bisher keiner?
Gruß Floyd
Hallo,
ich hab ein Usercontrol welches ich in einer Listboxähnlichen struktur darstellen will.
Das ganze so so aussehen:
Zweispaltige Listbox die eine belibige Anzahl an Usercontrols beinhalten kann.
Hat jemand ne idee wie ich sowas programmieren muss?
Ich glaube nicht das das mit der Standardlistbox geht oder?
Gruß Floyd
_Original von Pako_Der MouseUp Event wird nur im Form und nicht in der Titelleiste ausgelöst.
Hmm das könnte sein. Das wäre die überlegung das mit der API zu machen und dort auf das mouseup-event zu warten. ist aber ne unschöne lösung.
hmm, es gibt auch noch einen einfacheren weg ohne timer, prüfe einfach mit dem MouseDown in verbindung mit LocationChange ob sich das Formular bewegt. Und sobald MouseUp eintritt kannst du die Tranparenz wieder aufheben.
Gruß Floyd
Wenn du auf Bestellen klickst findest du dort ne ComboBox wo du auch .Net auswählen kannst.
Gruß Floyd
meißt hilft es wenn man ein Refresh macht.
also
public void addcol(string s, int w)
{
listView1.Columns.Add(s, w);
listView1.refresh();
MessageBox.Show("Ich werde benutzt!");
}
Hmm mag ja sein aber was spricht dagegen? Nur so aus neugier.
Gruß Floyd
Hier mal der code wie ich es in VB.Net machen. Müßt ihr halt nur noch übersetzten:
Public Shared instForm2 as Form2
Public Sub New()
instForm2 = Me
End Sub
und wenn ich jetzt von Form1 auf funktionen oder objekte von Form2 zgreifen will geht das sehr einfach
Form2.instForm2.Objekt.Eigenschaft = Wert
sollte nicht schwer in C# zu übersetzten sein.
gruß floyd
Was hällst du von der Idee nen Listview zu verwenden?
Gruß Floyd
a cool 😁 und wie bekomm ich jetzt darein noch ein event ? sowas wie das X
hi SimonKnight6600,
exakt das hab ich gemacht. Nur gibt es damit folgende probleme:
also wäre ansatz 1.: ich finde ne lösung für diese beiden probleme
und ansatz 2.: ich zeichne die titelleiste selber
nur hab ich für beide ansätze keinen lösungsweg 🙁
Gruß Floyd
hmm anscheinend nicht. wäre es denn möglich das MDI-System nachzubauen? und die titelleiste unterhalb meines controls zu bekommen?
Gruß Floyd
hmm oky, hat jemand zufällig ein beispiel wie das funktionieren soll?
hab zwar das hier gefunden : http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformscontrolclasswndproctopic.asp
aber ich kann leider kein Japanisch 😉
vorallem, wie zeichne ich dann die titelleiste neu und zwar mit bild und events? zum beispiel X um das event Form.Close auszuführen.
Gruß Floyd
hmm gehts nicht auch ohne api? ich will das projekt später auf mono portieren damit es auch unter linux lauft.
gruß floyd
Hi, ich hab ein Problem 😁
Und zwar hab ich ein problem mit dem aussehen von einem Fenster.
Die Titelleiste passt nicht zu meinem Design. Jetzt ist die frage ob und wie ich die titelleiste selbe zeichenen kann?!
Ich hatte mit für den kram einfach ein control geschrieben was genaus aussieht wie ich es brauche und dann halt die titelleiste auf dem formular ausgeblendet und mein control ganz oben hingelegt.
das problem ist jetzt folgende probleme:
das ganze soll im prinzip so aussehen:
jetzt will ich ne MDI-Anwendung darum bauen die ein Menü hat, eine Toolbar. Das ganze soll aber layouttechnisch so aussehen wie oben?
gibt es ne lösung für mein problem? wenn ja welche.
ich selber hab 2 Lösungsansätze für das Problem aber keinen kann ich umsetzten weil ich net weiß wie 🙁
der erste Lösungansatz wäre das ich die Titelleiste selber zeichne
der zweite wäre das ich mein Control über die Menüleiste bekommen was aber vorraussetzt das es nicht in den MDI-Contrainer gezeichnet wird 🙁
gruß floyd