Original von sbertl000
Es sollte ein Ereignis "DoubleClick" geben...sbertl
Wobei du dann noch im Ereignis mit
if([CheckedListBox].GetChildAtPoint(e.Location) != null)
{
}
prüfen solltest, das du auch wirklich ein Item erwischt hast, weil DoubleClick bei jedem Doppelklick irgendwo in der CheckedListBox ausgelöst wird.
knub
Hallo,
ich frag mich, wie du einen mehrseitigen Druck hinbekommen hast, wenn du "keine Ahnung vom Drucken hast".
Zeig mal die wesentlichen Teile deiner Druckroutine.
knub
Original von Danwe
Hat jemand ne Idee? Vielleicht ists möglich eine Form zu machen die sich vor alle anderen Programme drängeln kann, ich bin mir sicher sowas gibts.
Klar gibts sowas (Form.TopMost), aber ich würde es vielleicht mit einem richtigen nervigen Sound machen (Klingeln oder so).
knub
Hallo,
wie FZelle schon gesagt hat, du bist selbst verantwortlich fürs Drucken. Du musst also in deiner Druckroutine ([PrintDocument.Print]) selbst schauen, welchen Wert FromPage hat und dementsprechend drucken.
knub
Hallo,
[PrintDocument].PrinterSettings.FromPage
[PrintDocument].PrinterSettings.ToPage
[PrintDocument].PrinterSettings.PrintRange // wenn du alle Seiten einzeln angeben willst
oder mit einem PrintDialog.
knub
Hallo,
if(deinDialog.ShowDialog() == DialogResult.OK)
{
//nur wenn der Dialog nicht abgebrochen wurde ..
}
knub
Es ist heute noch so. Aber nicht nur das, es gibt/gab die verschiedensten Kombinationen von Lichtern, u.a. grün-gelb und Blinklichter.
http://de.wikipedia.org/wiki/Lichtzeichenanlage#Standard-Lichtzeichenanlage
Aber nunja, das ist _leicht _offtopic.
knub
Original von squadwuschel
naja wenn ich im word 2003 auf speichern unter gehe und dort *.xml auswähle sollte dies doch das open xml format sein oder?
Das ist nicht open xml, sondern nur eine Vorversion von Office Open XML. Inwieweit die kompatibel sind, weiß ich nicht.
http://de.wikipedia.org/wiki/Office_Open_XML#Vorgeschichte
das was du meinst ist das dann die Hilfe für System.xml ?
Nein, er meint bestimmt das: http://www.microsoft.com/downloads/details.aspx?familyid=ad0b72fb-4a1d-4c52-bdb5-7dd7e816d046&displaylang=en
knub
Ok, jetzt erscheint mir deine Variante doch richtiger ^^.
Original von Wolf_maYer
Ich weiß ja nicht, in welchem Land ihr lebt aber in Deutschland funktioniert die Ampel, die ich kenne anders.
Es gibt 4 verschiedene Kombinationen.
Rot
Rot/Gelb
Grün
Gelb
und wieder von oben.
Kleba hat ja eine konkrete Aufgabenstellung bekommen, siehe erster Post, und da ist es ja erstmal egal, wie ne Amepl nun funktioniert, es geht ums programmieren 😉.
Original von knub
Im Form.Load hat das Control schon ein Parent. Der Parent wird ja in InitializeComponent zugewiesen, also kannst du das direkt nach InitializeComponent im Form-Konstruktor machen.
Original von MrSparkle
Nö.
Doch 😉 (ich schrieb ja im Form_Load).
Aber das hat mit der Sache bei dir nichts zu tun, weil du ja ein abgeleitetes Control hast (ich dachte ja, du arbeitest im Form.Load, weil da hat jedes Control schon seinen Parent).
Ich denke dir hilft. Control.ParentChanged
knub
Hallo,
Wenn du auf den Button klickst, gibt es drei Möglichkeiten (zwei einfache und einen schwereren).
Wenn die Farbe Rot ist, und du klickst auf den Button, dann muss die Ampel auf jedenfall auf Gelb umschalten.
Genauso ist es bei Grün: Wenn die Ampel gerade auf grün ist, kann sich nach einem Buttonklick nur auf Gelb umschalten.
Schwieriger ist es, wenn die Ampel auf Gelb steht. Denn du weißt ja nicht, ob die Ampel gerade "von oben" (rot) oder "von unten" (grün) kommt.
Deshalb musst du dir, die vorherige Farbe immer in einer Variablen speichern.
//Speichert die vorherige Farbe
//Muss außerhalb von ampelÄndern_Click deklariert werden, damit der Wert auch außerhalb der Methode gespeichert wird
Color vorherigeFarbe;
private void ampelÄndern_Click(object sender, EventArgs e)
{
//erstmal die zwei leichten Fälle:
if (rot.BackColor == Color.Red)
{
rot.BackColor = Color.White; // Rot ausschalten
vorherigeFarbe = Color.Red; // Die vorherige Ampelfarbe war Rot
gelb.BackColor = Color.Yellow; //Gelb anschalten
}
else if(grün.BackColor == Color.Green)
{
gruen.BackColor = Color.White; // Grün ausschalten
gelb.BackColor = Color.Yellow; // Gelb anschalten
vorherigeFarbe = Color.Green; // Die vorherige Ampelfarbe war Rot
}
// So, jetzt das schwierigere
else if (gelb.BackColor == Color.Yellow)
{
gelb.BackColor = Color.White; // auf jedenfall erstmal gelb ausschalten
//jetzt prüfst du, ob die vroherige Ampelfarbe Rot war
if (vorherigeFarbe == Color.Red)
{
//wenn ja, musst du jetzt natürlich auf grün umschalten
gruen.BackColor = Color.Green;
}
else
{
//ansonsten natürlich auf rot
rot.BackColor = Color.Red;
}
vorherigeFarbe = Color.Yellow; //vorherige Farbe war gelb (nicht zwingend notwendig)
}
else
{
// hierhin solltest du eigentlich nie kommen
}
}
Schau dir den Code ruhig mal im Debugger an, und versuch den einzelnen Schritten zu folgen und zu verstehen.
knub
Original von MrSparkle
Aber mal noch ne ganz andere Frage: Ab wann hat denn ein Control eigentlich ein Parent?
Im Constructor logischerweise noch nicht, auch nicht im Control.Load Ereignis.
Im Form.Load hat das Control schon ein Parent. Der Parent wird ja in InitializeComponent zugewiesen, also kannst du das direkt nach InitializeComponent im Form-Konstruktor machen.
knub
Hallo,
Control.FindForm();
knub
edit:
FindForm ist intern aber genauso aufgebaut wie deine Methode.
internal Form FindFormInternal()
{
Control parentInternal = this;
while ((parentInternal != null) && !(parentInternal is Form))
{
parentInternal = parentInternal.ParentInternal;
}
return (Form) parentInternal;
}
Hallo,
Thread.Join();
knub
edit: siehe post unter mir
Original von MrSparkle
Ein Event ist im grunde nix anderes, als ein Delegate. Genauer gesagt, ein MulticastDelegate, d.h. man kann mehrere Callback-Funktionen aneinanderhängen (mit dem += Operator).
Events sind ja genau das, was er verstanden hat.
Was er nicht verstanden hat, sind Callbacks, anonyme Delegates etc.
knub
Hallo,
ohne Delegates wären keine Events möglich.
Oder bei Callback-Funktionen.
knub
Hallo,
Original von sunnyandy
Nur mit der SharpZipLib funktioniert es, allerdings möchte ich meine Anwendung kommerziell vertreiben, und kann deswegen nicht auf die Komponente zurück greifen.
Wieso nicht?
http://www.icsharpcode.net/OpenSource/SharpZipLib/
Bottom line In plain English this means you can use this library in commercial closed-source applications.
knub
Original von veasel
@knub
meine Post sind antworten auf deine Posts...
was ist daran so schwer?
Ich rede doch mit CaptainIglo und ich hab keine Fragen, dass sind alles Fragen die CaptainIglo helfen sollen, sein Problem zu lösen.
knub
Hallo,
kannst du bei OwnerDrawText nicht auch mit e.Graphics.FillRectangle() einen Hintergrund zeichnen?
knub
Original von Friedel
Hat knub in seinem zweiten post erwähnt, also nicht "allerdings anders als ihr alle geschrieben habt 😛" 😄
😁 😁 ([konnts mir nicht verkneifen ^^]
Original von CaptainIglo
Bei OwnerDrawText zeichnet er mir aber keine Hintergrundfarben mehr
Bei mir zeichnet er trotzdem Hintergrundfarben?! (siehe Anhang)
Das Selektierte kann ich dann selbst zeichnen, allerdings ist dann eben die gesamte Zeile zu zeichnen...
Dann berechne vorher mit Graphics.MeasureString() wie lang der String ist und zeichne nur soweit den Hintergrund. Oder verstehe ich das falsch?
knub
Hallo,
Meinst du mit Systemmenü das Kontextmenu, indme Wiederherstellen, Verschieben, Größe ändern etc. steht?
Wenn ja, hast du FormBorderStyle auf none gestellt?
knub
Hallo,
soweit ich das überblicken kann, muss die die Einrücktiefe etc. garnicht zeichnen.
Du stellst deinTreeView.DrawMode auf TreeViewDrawMode.OwnerDrawText und musst dich nur noch um den Text kümmern.
Mal ein ganz einfachs Beispiel für DrawItem (hier wird nur der Text gezeichnet, du müsstest das dann natürlich noch so ausbauen, wie du willst):
private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
e.Graphics.DrawString(e.Node.Text, treeView1.Font, Brushes.Black, e.Bounds.X,e.Bounds.Y);
}
knub
edit:
Original von veasel
this.treeView1.DrawNode += new DrawTreeNodeEventHandler(treeView1_DrawNode);
Jop.
Hallo,
DrawNode ist ein Event, und an diesen kannst du deine eigenen Methoden anhängen ("abonnieren"). Mir fällt grad auch kein anderes Wort ein ^^.
knub
edit: Rechtschreibung
Hallo,
Original von veasel
und mit Codebeispiel meine, was du mit abbonieren meinst?
Ich versteh die Frage nicht!? (ist es überhaupt eine).
Original von veasel
dass man zum zeichnen e.Graphics braucht, das weiß ich auch!
Das Posting war ja nicht nur auf dich, sondern vorallem auf CaptainIglo bezogen.
knub
Hallo,
Original von dennisspohr
Ich habs herausgefunden...allerdings anders als ihr alle geschrieben habt 😛
Wäre gut, wenn du deine Lösung posten könntest, falls zukünftig auch andere dieses Problem haben sollten.
Original von dennisspohr
allerdings enthält dieser Pfad 2 Ordner mit Leerzeichen, z.B. "Dokumente und Einstellungen". Wie bekomme ich hin, dass dies als EIN Pfad behandelt wird?
Schreib es in Anführungszeichen (musst du dann dementsprechend im String escapen).
knub
Edit: Synchronposting aller erster Klasse 🙂
Hallo,
[Hinweis] Wie poste ich richtig?
Punkte 4.
Außerdem kenne ich eure genauen Farben und "Bedürfnisse" nicht.
Nur soviel: zum Zeichnen benutzt ihr e.Graphics.
Genaueres in [Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox) und im Openbook, besonders Kapitel 22 und eventuell 25.
knub
Hallo,
noch mehr Wie gibts da eigentlich nicht ... ?? Erklär mal genau, was du machen willst.
knub
Hallo,
von wo startest du denn?
In Visual Studio kannst du unter Projekteigenschaften/Debuggen Parameter übergeben.
Ansonsten werden die Parameter einfach immer "hintendran" gehängt:
meineExe.exe parameter1 parameter2 ...
knub
Original von dennisspohr
Hi @ all,wahrscheinlich ist es total einfach.....wie kann ich eine Anwendung starten und Parameter für sie übergeben?
Willst du **im **Programm auf Parameter **überprüfen **oder **mit **Parametern starten?
Wenn ersteres gilt, dann siehe Friedel, in args sind dann alle Parameter.
knub
Hallo,
du kannst TreeView.DrawNode abonnieren und dann selberzeichnen.
knub
Original von herbivore
vielleicht musst du doch DrawMode.OwnerDrawVariable und das ListBox.MeasureItem-Ereignis verwenden
Hallo,
MeasureItem wird doch aufgerufen, wenn ich die Elementhöhe berechnen will, und nicht die Breite.
Hab es aber trotzdem probiert, nur weiß ich nicht, was ich bei MeasureItemEventArgs.**ItemWidth **angeben sollte.
Habe es mit 0, der Breite der ListBox und der Breite des Strings probiert; ein Scrollbalken erscheint jedoch nicht.
knub
Hallo,
ich habe eine ListBox, bei der ich die einzelnen Items selbst zeichne (ListBox.DrawItem = DrawMode.OwnerDrawFixed).
Im **OnDrawItem **wird dann der Text mittels e.Graphics.DrawString() gezeichnet. Wenn der String allerdings zu lang ist, wird er natürlich rechts abgeschnitten.
Wie erreiche ich trotzdem einen horizontalen Scrollbalken?
ListBox.HorizontalScrollbar = true hilft da auch nichts.
knub
Hallo,
bereits vorhanden:
string extension = System.IO.Path.GetExtension("pfad");
Hallo,
probiers mal mit System.Diagnostics.Stopwatch.
knub
Hallo,
also für 4 Tage Erfahrung find ich das schon beachtlich.
Original von dennisspohr
Könntest ihr euch ihn mal angucken und mir evtl. Fehler bzw. Verbesserungsvorschläge posten?
2 Dinge sind mir bisher aufgefallen:1.Dein Bookmarksystem find ich wenig intuitiv. Wenn ich zum Beispiel den Webbrowser starte und bei den Bookmarks auf dennispohr.de gehe, erwarte ich eigentlich, dass ich auf dennispohr.de lande. Es passiert allerdings garnichts. 1.Mach mal folgendes: Starte den Browser und gib als URL www.google.de ein. Dann wähl bei den Bookmarks www.google.de aus und versuch es zu entfernen. CRASH. IndexOutOfRangeException
knub
Hallo,
jetzt funktioniert es, danke! Auf so einen Gedanken wäre ich ja nie gekommen ^^.
knub
Unter Win Vista funktionierts bei mir auch.
Hallo,
hat das Bild den gleichen Namen wie das Steuerelement?
knub
Original von xxxprod
//EDIT: Wie hast du die Eigenschaft denn implementiert?
Eigentlich ganz normal:
get { return this._images; }
set
{
this._images = value;
if (this._update)
this.ShowImages(this._currentTab);
}
Original von xxxprod
PS: Ich hab einen ähnlichen Fehler bei einer Collection auch schon mal erlebt. Nämlich dann, wenn das Property einen Setter hatte weil Properties für Collections meistens nur einen Getter haben und in der Klasse initialisiert werden.
Hab es jetzt mal ohne Setter probiert --> gleiches Problem.
Danke, knub
Hallo,
leider hab ich, soweit ich das erkennen kann, diese Funktion als C#-Express User nicht.
Allerdings glaub ich auch nicht, dass der Fehler direkt im VisualStudio liegt, sondern eher in meinem Code. Vielleicht will er die Generics nicht, vielleicht fehlt irgendwo ein Attribut (wobei ich kein passendes finde ...) oder irgendetwas anderes ...
Danke, knub
Hallo,
folgendes Problem:
Ich hab ein eigenes, von UserControl abgeleitetes, Steuerelement erstellt, dass eine öffentlich Eigenschaft Images (vom Typ System.Collections.Generic.List<Bitmap>).
Das Steuerelement ist soweit fertig und nun wollte ich noch ein bisschen Funktionalität für den Designer hinzufügen.
Die Eigenschaft Images wird im Designer im Eigenschaftsfenster als Auflistung (ähnlich wie z.B. bei ImageList.Images) angezeigt. Wenn ich allerdings im darauf folgenden Dialog auf hinzufügen klicke, kommt folgende Fehlermeldung:
"Ungültiger Parameter".
Wenn ich dann versuche normal im Designer weiterzuarbeiten (z.B. Größe der Form ändern) kommt folgende Fehlermeldung:
Das Steuerelement MeinSteuerelement hat eine unbehandelte Ausnahme im Designer ausgelöst und wurde deaktiviert.
Ausnahme:
Ungültiger ParameterStapelüberwachung:
sowie
"Fehler bei der Codegenerierung für Images-Eigenschaft: Ungültiger Parameter"
Danach hilft immer nur ein Neustart von VS.
Woran liegt das nun?
Das einzige was ich mir vorstellen könnte, ist, dass der Designer nicht mit generischen Klassen "arbeiten will".
Muss ich stattdessen eine eigene Collection für die Bilder schreiben (ähnlich zu ImageList.ImageCollection bei einer ImageList)?
Danke, knub
Hallo,
meinst du
Properties.Settings_Graphanzeige = 1;
?