Hallo herbivore,
danke für den Tipp! 😃
Ich greife nämlich nur remote via mstsc auf den Entwicklungsserver zu und die übertragene Farbtiefe liegt nur bei 16 Bit.
Wenn ich das Programm auf dem lokalen PC ausführe (24 Bit Farbtiefe), ist alles i. O.
Da hätte ich natürlich auch selbst drauf kommen können!
Christoph
Hallo,
ich zeichne mit e.Graphics.DrawEllipse Kreise mit einem Durchmesser von 30 Pixeln. Diese sind sehr stufig, obwohl ich
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
verwende.
Gibt es eine Möglichkeit, damit die Kreise etwas schöner aussehen?
Vielen lieben Dank und Kölle Alaaf!
Christoph
herbivore schrieb:
Ich mach es allerdings genau so wie du es überlegt hast.
Hallo herbivore,
du glaubst ja gar nicht, wie stolz mich dieser Satz gemacht hat. 😃
//Edit: Kompromiss: wie oben vorgehen, aber alle x Tage den Hash komplett neu berechnen lassen
Ich werde das jetzt so realisieren und sehe den Thread als geschlossen an.
Vielen Dank an alle.
Christoph
Hallo,
ok, das beruhigt mich jetzt sehr, dass der MD5-Hash "mit an Sicherheit grenzender Wahrscheinlichkeit" eindeutig ist, zumal es ja kein Aufwand ist, zusätzlich noch die Dateigröße zu prüfen.
Um die Hash-Codes aller Dateien nicht immer wieder komplett neu berechnen zu müssen (würde ja stunden- oder tagelang dauern), würde ich diese gerne in einer Datei speichern.
Bin ich auf der sicheren Seite, wenn ich den Hash-Code nur dann neu berechne, wenn sich das Änderungsdatum der entsprechenden Datei ändert?
//Edit: Aufbau der Datei: Pfad inkl. Dateiname, Größe, Änderungsdatum, Hash
Wir reden hier nicht von mutwillig manipulierten Dateien bzw. absichtlich verstelltem Systemdatum, sondern von einem ganz normalen Fileserver.
Christoph
Hallo,
um Dubletten von Dateien auf unseren Servern zu finden (auch wenn die Dateien anders heißen bzw. eine andere Erweiterung haben), erstelle ich eine Liste mit allen Dateiennamen (inkl. Pfad) und dem entsprechenden MD5-Hash der Datei.
Wie "eindeutig" ist das Ergebnis? Wie wahrscheinlich ist es, dass eine andere, genau so große Datei den selben Hash-Code hat?
Gibt es evtl. einen anderen, mindestens genau so guten, Hash-Code-Algorithmus, den ich zusätzlich generieren kann, um die "Eindeutigkeit" wahrscheinlicher zu machen?
Vielen Dank für eure Antworten
Christoph
Hallo,
ich habe mir eine Anwendung geschrieben, die "Klebezettel"-Fenster auf dem Bildschirm anzeigt. Diese kann ich mit der Maus beliebig verschieben.
Jetzt würde ich gerne per Drag & Drop so einen "Klebezettel" löschen können, indem ich ihn in den Papierkorb schiebe. Ist so etwas machbar? Allerdings sollte das Fenster ausschließlich auf den Papierkorb reagieren und auf keine andere Anwendung, die Drag & Drop unterstützt.
Christoph
Basierend auf dem tollen Beispiel von JAck30lena (siehe weiter oben), habe ich eine nette Erweiterung geschrieben:
Ein komplettes Fenster, in dem sich ein Loch befindet!
Mir fällt zwar keine sinnvolle Anwendung dazu ein, aber wer weiß...
System.Drawing.Drawing2D.GraphicsPath gPath = new System.Drawing.Drawing2D.GraphicsPath();
gPath.AddRectangle(new Rectangle(this.Location, this.Size));
gPath.AddEllipse(100, 100, 100, 100);
this.Region = new Region(gPath);
Setzt man die Eigenschaft TopMost = True, dann kann man durch das Loch z. B. Text markieren oder eine andere Anwendung vom Desktop starten.
Hallo,
wie bekommt man so einen Splash-Screen hin, wie Visual Studio 2010 ihn hat?
Dort wird kein rechteckiges Fenster angezeigt, sondern der untere Teil in Form einer Welle "abgeschnitten". Man sieht nicht nur den Hintergrund (Transparenz), sondern kann auch Icons anklicken, die dort platziert sind, kann also "durch das Fenster hindurch" etwas anklicken. Das verwirrt mich doch etwas.
Wie funktioniert das? Geht das auch schon mit VS 2008?
Christoph
Hallo,
vielen Dank. Das wird mir sicherlich weiterhelfen.
Schöne Weihnachten.
Christoph
Hallo,
glücklich bin ich mit der Lösung nicht, aber wenn du das sagst, wird es wohl richtig sein.
Wie bekomme ich denn IntelliSense in mein RT-Control? In den Eigenschaften habe ich unter Intelli... nichts finden können.
Christoph
Mit Händewaschen schaffst du das nie und nimmer!
Ich meinte natürlich sechs Anschläge die Sekunde.
Tja, wenn man so schnell tippt, dann hat man schnell sein Gehirn überholt und schreibt Unsinn.
Meinst du nicht, dass es viel zu viel Rechenaufwand bedeutet, wenn ich bei jedem Tastenanschlag das ganze RT-Control auf Fehleingaben überprüfen muss?
Christoph
Hallo,
Zitat von herbivore:
Bis man da alle Möglichkeiten gefunden und abgedichtet hat, ist es doch einfacher und sicherer auf TextChanged zu reagieren.
So eine XML-Datei kann schon mal mehrere MB groß werden. Sie ist hierarchisch aufgebaut und es muss überprüft werden, ob sie konsistent ist oder z. B. schließende Tags fehlen.
Wenn ich das so löse, wie herbivore es in dem Beitrag geschrieben hat, dann ist das doch ziemlich viel Rechenaufwand. Normalerweise tippt man ja die Zeichen einzeln ein. Stell dir mal bitte vor, was der Anwender sagen würde, wenn es eine halbe Sekunde dauern würde, bis das nächste Zeichen angezeigt wird, weil im HG so lange geprüft werden muss. Ich selbst schreibe ca. 350 Anschläge die Minute, das sind fast sechs Anschläge die Minute. Da sind 0,5 Sekunden pro Zeichen eine ziemlich lange Zeit.
Aus diesem Grund habe ich nach einer Lösung gesucht, die es einfach verbietet, Zeichen anders einzugeben, als ganz normal über die Tastatur. Im Notfall würde ich es so machen, dass ich das RT-Control schreibgeschützt erstelle und die Eingaben über ein anderes Control (ohne Anzeige) entgegen genommen werden und dort nur die Zeichen verarbeitet werden, die über Key... Ereignisse eintreffen.
Christoph
Hallo,
ich habe mir einen XML-Editor programmiert, mit dem ich Datensätze für unsere BDE*-Software erzeuge.
Wenn ich in dem RT-Control das Kleiner-Zeichen drücke, erscheint eine Liste mit allen gültigen Tags und ich MUSS eines dieser Tags auswählen (Mausklick, Cursor + Enter bzw. eintippen). Sobald ich das Größer-Zeichen tippe, wird automatisch das schließende Tag erzeugt und der Cursor zwischen den beiden Tags platziert.
Nun möchte ich natürlich verhindern, dass ein Benutzer mittels Einfügefunktion (z. B. STRG+V) irgend etwas unformatiertes einfügen kann. Laut herbivore ist es aber (fast) unmöglich, alle denkbaren Eingabemöglichkeiten zu unterbinden (Tastatur, Maus, Spracheingabe, ...).
Daher wollte ich gerne wissen, ob man das RT-Control so ableiten kann, dass nur noch eine Tastatureingabe als gültige Eingabemöglichkeit zur Verfügung gestellt wird.
Vielen lieben Dank für eure Unterstützung und frohes Fest
Christoph
*) Betriebsdatenerfassung
Hallo,
ja, das habe ich ja gelesen, aber wie (und vor allem: woran) binde ich die Textboxen in meiner Form an?
Dann muss ich die Werte nicht mehr einzeln aus der Datenbank auslesen bzw. in der Datenbank speichern. Auch das Blättern zum nächsten / vorherigen Datensatz ginge dann ja automatisch.
Früher in Visual Basic (ich glaube ab Version 3 oder 4 Prof.) hatte ich dazu ein Steuerelement (DataControl?), an das ich eine Access MDB angebunden habe. An das Dataset habe ich dann die Textboxen binden können. Mit Commit und Rollback wurden dann die geänderten Daten gespeichert bzw. verworfen. Auch das Blättern ging sehr einfach.
Ich suche nun nach einer Möglichkeit, dies mit C# und SQL-Server 2008 Express nachzubilden. Ich bin mir sicher, dass es dazu was passendes gibt.
Viele Grüße
Christoph
Hallo,
"zu Fuß" bekomme ich den Zugriff auf die SQL-Datenbank hin, ich bin auch im Besitz der Bücher VC#2005 / 2008 aus dem Hause Galileo.
Aber dort wird leider nicht beschrieben, wie man das ganze (performant) über die direkte Anbindung der Controls (über eine Component?) realisiert.
Christoph
Hallo,
ich möchte gerne eine Adressdatenbank erstellen.
Die einzelnen Datensätze sollen über Textboxen erstellt / bearbeitet werden, die in einer separaten Form angezeigt werden.
Was muss ich beim Ereignis Form_Load durchführen, damit ein neuer Datensatz erstellt werden kann bzw. ein bestimmter Datensatz zur Bearbeitung geladen wird?
Wie verbinde ich die Textboxen mit den Daten in der Datenbank?
Was muss ich im Ereignis cmdOk_Click ausführen, damit die neuen bzw. geänderten Daten in der Datenbank gespeichert werden?
Vielen lieben Dank für eure Hilfe
Christoph
Super! Das ist DIE Lösung!
Ich dachte nicht, dass ich mich um diese MaximizeBox kümmern müsste, da sie ja überhaupt nicht angezeigt wird (wegen ControlBox = false;), aber man sollte nicht unbedingt denken...
Vielen Dank und ein schönes Wochenende
Christoph
Hallo demondriver235,
du hast Recht, das klappt, aber wirklich befriedigend finde ich die Lösung nicht.
Viele Grüße aus Köln
Christoph
//Edit: Name falsch geschrieben, sorry
Hallo,
wie kann ich verhindern, dass ein Fenster maximiert wird?
Ich habe FormBoderStyle auf FixedSingle stehen und dennoch kann ich durch Doppelklick in die Titelleiste das Fenster maximieren.
Wenn ich MaximumSize und MinimumSize auf den Wert von Size stelle, wird das Fenster für den Bruchteil einer Sekunde maximiert, dann wieder in der Größe reduziert und in der oberen linken Ecke platziert. Ein erneuter Doppelklick bewirkt das gleich, bis darauf, dass das Fenster wieder an der ursprünglichen Position angezeigt wird.
Gibt es so etwas wie ein QueryResize Ereignis, bei dem man mittels
e.Cancel = true;
das Ändern der Größe verhindern kann?
Christoph
Hallo herbivore,
vielen Dank, du hast mir mal wieder sehr geholfen.
Davon abgesehen sollte das Schließen eines MDI-Fensters ohne weiteres Zutun mit Strg-F4 funktionieren.
Sollte das jetzt heißen, dass es generell geht (tut es bei mir nämlich nicht) oder dass man das immer entsprechend programmieren soll?
Viele Grüße aus Köln
Christoph
//Edit: Tippfehler
Hi,
ich möchte ein MDI-Fenster mittels STRG+F4 schließen.
Leider reagiert das MDI-Fenster weder auf Form-KeyDown, -KeyPress noch -KeyUp. Was mache ich da falsch? Habe in allen drei Routinen einen Breakpoint gesetzt, aber keine der Routinen wird aufgerufen, wenn ich eine (Funktions-)Taste drücke.
Christoph
Hallo JAck30lena,
unregistrieren tut man dann mit "-="
Muss man vor dem Schließen unregistrieren oder sollte das jetzt nur eine Info darüber sein, was möglich ist?
Christoph
Hallo JAck30lena,
vielen Dank, das wäre sehr nett von dir. Code siehe oben.
Allerdings muss ich dich warnen: Ich programmiere seit mehr als 20 Jahren COBOL und das hinterlässt natürlich Spuren in der Denkweise...
Christoph
Hallo JAck30lena,
nach zig Versuchen, raten und probieren habe ich es doch endlich geschafft!
Aber verstanden, wie(so) es klappt, habe ich nicht...
Um einen neuen MDIChild zu erstellen, nutze ich im MDIContainer folgenden Code:
Form2 f2 = new Form2();
f2.MdiParent = this;
f2.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form2_FormClosed);
f2.Show();
Und behandele das Schließen im MDIContainer hier:
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
Christoph
Hallo JAck30lena,
das Buch habe ich selbst. Es ist ein sehr gutes Buch, das mir auch schon häufig weiter geholfen hat.
Nur finde ich leider nichts zu meinem Problem oder bin einfach zu dumm es entsprechend umzusetzen.
Daher meine flehende Bitte: kannst du mir sagen, wie ich das umsetzen kann? Du sollst natürlich nicht den kompletten Code für mich schreiben, aber wie erreiche ich es, dass beim Event FormClosed im MDIChild "etwas" im MDIContainer aufgerufen wird?
Christoph
Hallo JAck30lena,
könntest du mir denn bitte wenigstens einen Tipp geben, unter welchem Stichwort ich das finden kann?
<edit>
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MdiParent.Form2_FormClosed);
im MDIChild funktioniert leider nicht, obwohl ich Form2_FormClosed aus dem MDIChild in den MDIContainer kopiert habe (geht auch nicht, wenn ich es als public definiere).
</edit>
Christoph
Hallo JAck30lena,
und wie mache ich das? Habe leider keinen Plan. 😦
Christoph
Hallo,
wenn mein MDIChild geschlossen wird, soll dies dem MDIContainer mitgeteilt werden.
Wie kann man das lösen?
Ich habe versucht das mit einem Event zu lösen, bekam es aber leider nicht hin. 😦
Christoph
Hallo Herbivore,
mit "impliziten Castingoperator" konnte ich leider nichts anfangen, sorry.
Christoph
Hallo,
ich habe eine Structure mit vier int Feldern: Left, Top, Right, Bottom.
Diese beziehen sich auf ein Rechteck, das auf dem Bildschirm dargestellt wird, wobei sich Rechtecke nicht überschneiden können (ist bereits gelöst).
Ich muss nun mit möglichst wenig Prozessorlast feststellen, ob bzw. welches Element auf einer gegebenen Koordiante liegt.
Bisher habe ich dazu ein Array benutzt und jedes einzelne Element geprüft, bis die Liste vollständig durchlaufen war oder ein passendes Element gefunden war, was allerdings nicht besonders effektiv war.
Gibt es nicht eine schnellere Suchmöglichkeit? Da es sich um max. 256 Elemente handelt, darf die Lösung auch ruhig ein wenig mehr Speicher kosten. Wichtig ist nur, dass der Prozessor nicht so sehr belastet wird.
Vielen Dank schon mal
Christoph
Hallo winSharp93,
vielen Dank für den Tipp.
Habe jetzt folgendes gefunden, was mir offensichtlich hilft:
struct degree
{
int deg;
public static implicit operator degree(int i)
{
degree temp = new degree();
temp.deg = i;
return temp;
}
}
Damit kann ich folgendes machen:
degree D;
D = 5; // D.deg = 5;
Aber wie bekomme ich folgendes hin?
int i = D; // i = D.deg;
Christoph
[EDIT=herbivore]Threads zusammengefügt[/EDIT]
Hallo,
Int32 ist eine Sturktur (System.Int32).
Warum kann man dann direkt der Struktur Werte übergeben bzw. davon abrufen?
Int32 i; // struct System.Int32
i = 5;
Console.Writeline(i);
Kann mir bitte jemand ein Stichwort nennen unter dem ich Informationen dazu finden kann?
Vielen Dank schon mal
Christoph
Hallo,
ich arbeite viel mit Winkeln und Kreisen und muss deshalb immer wieder von Radiant in Degree umrechnen.
Dabei würde ich gerne eine Struct erstellen, wo folgendes möglich sein sollte:
Radiant winkelRad;
Degree winkelDeg;
Degree winkelDeg2;
winkelDeg = 1;
winkelRad = winkelDeg.ToRad();
wineklDeg2 = winkelRad.ToDeg();
Im Prinzip sollte diese Struct mit der Struct von System.Int32 identisch sein, jedoch noch um ToRad() bzw. ToDeg() ergänzt sein.
Vererbung ist ja leider nicht möglich, aber vielleicht gibt es ja einen anderen Ansatz, um eine Int32 ähnliche Klasse zu erstellen.
Für jeden Tipp bin ich sehr dankbar.
Christoph
Und das ergab dann einen Stundenverdienst von 3 Euro? 🙂
So, habe die Lösung jetzt, dank Gedankenanstoß von vbprogger:
((Form1)this.MdiParent).artikelToolStripMenuItem.Checked = false;
Hallo vbprogger,
bist du sicher, dass das die Lösung für mein Problem ist???
Ich möchte kein Feld aktivieren (Focus), sondern den Haken im Menü löschen.
Christoph
Hallo,
ich habe einen MDI-Container (Form1), in dem ich ein Menü anzeige. Öffne ich über das Menü ein MDI-Fenster, wird der entsprechende Menüeintrag auf Checked = True gesetzt. Durch Abfragen auf Checked wird verhindert, dass ein Fenster mehrfach geöffnet wird.
if (!artikelToolStripMenuItem.Checked)
{
artikelToolStripMenuItem.Checked = true;
Artikelstamm = new Form2();
Artikelstamm.MdiParent = this;
Artikelstamm.Show();
}
else
{
Artikelstamm.Activate();
}
Jetzt habe ich aber das Problem, dass ich nicht weiß, wie das MDI-Fenster mittels Event auf das Menü im MDI-Container zugreifen kann, um Checked = False zu setzen.
Kann mir bitte jemand erklären, wie das lösbar ist?
Habe es z. B. mit
((ToolStripMenuItem)MdiParent.artikelToolStripMenuItem).Checked = false;
versucht, aber das klappt leider nicht. 😦
Vielen Dank
Christoph
Hallo,
ich schlage mich momentan mit RFC 1157 (SNMP) herum und steige da einfach nicht durch. 😦
Hat vielleicht jemand von euch ein Beispiel für mich, an dem ich nachvollziehen kann, wie ein SNMPGet-Request aussehen muss und wie die Antwort dazu lautet?
Ich will doch "nur" die Zählerstände unserer Drucker abfragen...
Beispiel:
Drucker: IP 192.168.15.1
SNMPGet für Gesamtzähler: 1.3.6.1.4.1.367.3.2.1.2.19.5.1.9.26
Fertige C# 2008 Programme helfen mir wenig, da ich gerne selbst verstehen möchte, wie das funktioniert. POP3, SMTP und IMAP habe ich ja auch verstanden.
Vielen Dank für eure Hilfe
Christoph (ziemlich verzweifelt)
Hallo,
@juetho: Vielen Dank, ich glaube der ConnectionString wird mir helfen.
@JAck30lena: Ich habe mich wohl missverständlich ausgedrückt. Wollte durch die Angabe von DGV nur beschreiben, wozu ich das einsetzen möchte.
Viele Grüße
Christoph
verwendetes Datenbanksystem: Paradox 4/5
Hallo,
meine Kollegen haben bis vor Kurzem ausschließlich in Delphi programmiert. Ich konnte sie jetzt davon überzeugen, dass es keine schlechte Sache ist, zukünftig auf C# umzusteigen, aber...
... sie haben bisher der BDE (Borland Database Engine) gearbeitet und Paradox Datenbanken Version 4/5 benutzt.
Wer kann mir sagen, wie ich diese unter C# z. B. in einem DataGridView einbinden kann?
Edit: Benutze VC# 2008 Express
Christoph
Zum Verständnis:
Die Seite soll im Browser angezeigt werden, das C#-Programm soll aber durch Klicken auf einen Button die Anmeldung innerhalb des Webbrowsers (Internet Explorer) übernehmen. Es müsste also irgend eine Schnittstelle zwischen dem C#-Programm und dem IE geben. Ich habe so ein Programm schon mal im TV gesehen.
Grund für das Programm ist nicht zu spammen, sondern für jeden Account ein sicheres Passwort zu benutzen, das auch regelmäßig geändert wird. Wer kann sich so was schon merken? Aus Faulheit macht man das i. d. R. nämlich nicht.
Hallo,
ist es möglich, dass ein C# Programm Formulare im Webbrowser automatisch ausfüllt?
Ich denke da z. B. die automatische Eingabe von Benutzername und Kennwort bei E-Mail-Accounts. Die vielen unterschiedlichen (und hoffentlich komplexen) Passwörter kann sich ja keiner merken.
Beispiele, wo ich es gerne einsetzen möchte:
Vielen Dank für eure Hilfe
Christoph
Ist das nicht eher eine Frage, die du der Cisco-Hotline stellen solltest?
Außerdem bietet Cisco doch ein wunderbares Programm zum Verwalten von Switchern an. Das haben wir selbst im Einsatz und sind damit sehr zufrieden.
Christoph
Hallo,
Bezug nehmend auf mein Posting zu DataGridView habe ich noch mal eine Frage:
Wie kann ich verhindern, dass in der aktuellen Zeilenüberschrift das "schwarze Dreieck nach rechts" angezeigt wird? Das empfinde ich als störend.
Vielen Dank für eure Hilfe
Christoph
Hallo herbivore,
vielen herzlichen Dank.
Christoph
Habe es jetzt, dank Inspiration durch herbivore, so gelöst:
string.Format("{0:#,##0}",Wert);
Ein passendes Standard-Format habe ich leider nicht gefunden (1000-er Trennzeichen, keine Nachkommastellen).
Christoph
VC#2008
Hallo,
ich möchte gerne long-Zahlen mit 1.000-er Trennzeichen formatiert ausgeben.
Dazu habe ich die Zahlen wie folgt formatiert:
string.Format("{0:0,0}",Wert);
Das klappt auch wunderbar, es sei denn, der Wert ist einstellig, dann wird z. B. "05" ausgegeben.
Was mache ich falsch bzw. wie kann ich das besser formatieren, damit dieser seltsame Effekt nicht auftritt?
Christoph
Alles klar, vielen Dank für die ausführliche Antwort.
Christoph