Ja, aber wie stelle ich das an?
private override Size DefaultSize
{
set
{
base.DefaultSize = new Size(0, 10),
}
get
{
return base.DefaultSize;
}
}
?
Die Zuweisung darf ich nicht machen, da "DefaultSize schreibgeschützt" sei.
mfg
webstarg
Hallo!
Kann man bei einer eigenen Klasse, die von WinForms erbt, die Property DefaultSize überschreiben (da diese schreibgeschützt ist)? Also eine eigene Size festlegen?
mfg
webstarg
Original von Emilio111
Habe das script unter einer Windows XP - Umgebung getestet und siehe da: es duut!
PS: Das mit Form_DragEnter und Form_DragDrop, das geht und meinObjekt_DragEnter, meinObjekt_DragDrop, das nicht geht habe ich mit Windows XP Home SP2 getestet.
mfg
webstarg
Original von moleman
ich wollte das "\n" eigentlich umgehen... irgendwie Dann ersetze es doch mit Environment.NewLine :D grüße webstarg
Arrays haben die Eigenschaft Length, die die Array-Länge angibt.
Wie das bei mehrdimensionalen Arrays läuft, weiß ich leider nicht mehr auswendig.
webstarg
_Original von moleman_AllesUeberDateien2.0.pdf habe ich mir angesehen und sowas gebastelt, was mir aber leider alles in eine zeile haut 😦
Hallo moleman,
neue Zeile mit Environment.NewLine
also: sw.Write(integer.ToString() + Environment.NewLine);
mfg
webstarg
Hallo Emilio111,
auch ich hatte vor 3 Tagen dieses Problem.
So wie ich das verstanden habe, "funktioniert" (?) das Event DragEnter und DragDrop nur von der Form. Die anderen der Winforms (also pictureBox, ...) werden (scheinbar) nicht angesprungen.
Das finde ich aber ziemlich merkwürdig, wieso sind dann die Events bei den Winforms enthalten?
Gelöst habe ich mein Problem jedenfalls, indem ich dann diese beiden Form-Events verwendet habe, das DragDrop habe ich aber nur zugelassen, wenn die Koordinaten innerhalb meiner gewünschten Winform-Objektes sind. Auf die DragDrop-Koordinaten kannst du mit e.X und e.Y zugreifen, bei Winform gibt es (in diesem Fall PictureBox) Bottom, Top, Left, Right.
Aufzupassen ist evtl. noch, wenn du eine Menüleiste (MainMenu) verwendet, weil diese dann die Koordinaten der Winforms verschiebt, das X, Y von e aber nicht.
Hoffe konnte helfen
webstarg
_Original von herbivore_mit eine einzelnen fünfseitigen Würfel, kommt man im Schnitt 3 Felder weit, mit einem sechseitigen 3,5 Felder.
Bezogen auf: welche Felder wie oft getroffen werden
Anmerkung: Am Ende des Spielfeldes wird vorne wieder begonnen. (40 Felder / Runde)
Versuche nur herauszufinden, ob mein Ergebnis realistisch ist.
mfg
webstarg
_Original von herbivore_Die Verteilung von zwei Würfeln bekommt man durch rand.Next(1,7) + rand.Next(1,7).
Ist es möglich, dass mit einem 5-zahligen Würfel und einem 6-zahligen Würfel fast kein Unterschied auftritt (welche Felder wie oft getroffen werden). Am Ende des Spielfeldes wird vorne wieder begonnen.
webstarg
Über folgenden Obfuscator bin ich gerade gestoßen:
Salamander .NET Obfuscator
http://www.remotesoft.com/salamander/obfuscator.html
This trial version contains full functionalities, but it is only meant for your internal evaluation purpose, and thus you must not distribute the obfuscated code.
grüße
webstarg
Original von herbivore
Hier muss etwas falsch sein oder?
Falsch würde ich nicht sagen, aber ich würde ehertextBox1.Text = (string)TreeNode.Tag;
verwenden.
@ herbivore:
Konvertieren und Casten führt doch das gleiche aus, oder? Gibt es da einen Unterschied? 8o
webstarg
Original von herbivore[...] bei einer so kleinen Zahl ist noch kein Zyklus eingetreten [...] 😁
😁 Was wäre eine große Zahl?
Okay, dann belasse ich es bei einem Objekt.
Danke für die vielen Antworten.
webstarg
Also ich habe 600.000.000 verwendet.
webstarg
Danke für die Antworten.
@ herbivore: Damit hast du natürlich Recht. Ich habe das hier nur zur Vereinfachung mit .Next(2, 12) gemacht, in meinem Programm gibt es zwei Randoms, die ich beide mit .Next(1, 6) bzw. 1, 7 (muss ich noch korrigieren) aufrufe.
@ winsharp93: Das wäre ein Idee.
@ b3nJ:
obwohl ich eigentlich gedacht habe, dass der seed, wenn er nicht übergeben wird zufällig generiert wird? wie winSharp93 schon gesagt hat aus der systemzeit.
Ja, das stimmt schon. Nur verändert sich die Systemzeit nicht schnell genug für eine for-Schleife, die nicht viel Inhalt im Rumpf hat.
mfg
webstarg
Original von B3nj
hm, so müsste es doch gehen:return new Random().Next(2,12);
so wird gleich jedes mal neu geseedet.
mfG b3nJ
Nein, das kann ich nicht verwenden, da die Abfragen dauernd (d. h. von einer for-Schleife aus) durchgeführt werden und somit folgendes - womit ich schon einmal ein Problem gehabt habe - passieren: Random
webstarg
_Original von winSharp93_Relativ lang. Eigentlich so gesehen "unendlich". (sie endet ja nie) Wenn aber sich einmal eine Zahl wiederholt (was ja zweifelsfrei irgendwann vorkommen muss), wiederholen sich aber natürlich auch alle folgenden Zahlen.
Ist das für mein Programm dann ein Problem?
Die Zahlen wiederholen sich fast ständig, wenn der Bereich von 2-12 reicht.
Somit könnte ich mit meinem Programm mit 6.000 Zügen das gleiche wie mit 600.000.000 berechnen. Nur mit kürzerer Rechenzeit. ?
Gibt es dafür Abhilfe? (Ich befürchte: nein) (Z. B. zwischenzeitlich neu seeden, ...)
grüße
webstarg
Original von winSharp93
Wenn jemand den Zufallsgenerator genau kennt, kommt es ja außerdem auf dasselbe heraus, ob man nun die nächste Zahl in der Reihe oder die drittnächste verwendet.
Wie meinst du das mit "den Zufallsgenerator kennen"? Den Seed wissen?
Wie lange ist diese Reihe?
Mein Programm simuliert etwa 600.000.000 Würfelzüge. Da könnte das problematisch sein...
eine Zahl zwischen 2 und 11 - der zweite Parameter gibt die exclusive Obergrenze an.
😁 Danke für diese Information. Vielleicht ist das ja ein (Teil-)Grund für recht unrealistische Ergebnisse. Eigentlich nicht vielleicht.
mfg
webstarg
Original von B3nj
wenn du bei dme konstruktor von Random keine Zahl übergibst, dann sind die Zahlen nacher sehr zufällig, bzw. du kriegst es nicht mehr besser hin, wenn du jedoch dem Konstruktor von Random noch eine Zahl übergibst, und diese immer gleich ist, dann würfelt der würfel immer die gleichen zahlen in der gleichen reihenfolge.mfG b3nJ
Hallo b3nJ,
danke für deine Antwort. Verstanden habe ich sie aber nicht ganz: Den Wert übergebe ich dem Konstruktor (falls ich das mache) ja nur einmal. Beim Instanzieren.
🤔
grüße
webstarg
Hallo oberstift,
als ich meine zweite Antwort geschrieben habe, war deine noch nicht da, deshalb habe ich dann den Quelltext-Ausschnitt geschrieben. 😉
Bezüglich der Methode hast du natürlich Recht. Um mit bool zu vergleichen muss man die Methode IsMatch verwenden. (Ich hatte meinen Ausschnitt nicht getestet.)
mfg
webstarg
Hallo!
Ich habe eine Instanz von Random mit der ich mit der Next Methode Zufallszahlen zwischen 2 und 12 erzeuge.
Erreiche ich da aber gute Würfelergebnisse, wenn ich das mit einem Random-Objekt als Klassenvariable und einer GetWürfelErgebnis-Methode (Inhalt: return myRandom.Next(2, 12)😉 realisiere, oder müsste ich inzwischen ungenutzte Zufallszahlen generieren, da eine Zufallszahl (wie ich das verstanden habe) auf der vorherigen basiert. (Also myRandom.Next(2, 12); myRandom.Next(2, 12); return myRandom.Next(2, 12); um Ergebnisse (relativ) unabhängig vom vorherigen Würfelausgang zu erhalten?)
mfg
webstarg
Hallo!
using System.Text.RegularExpressions;
...
string input = Console.ReadLine();
Regex hexRegex = new Regex("^[a-z]{2}$");
if (hexRegex.Match(input))
{
//Hex
}
else
{
//Kein Hex
}
So etwas hätte man aber auch mit der Suchfunktion finden können.
grüße
webstarg
Hallo oberstift,
Regex wäre da eine Lösung.
Namespace: System.Text.RegularExpressions;
Pattern: ^[A-Fa-f0-9]{6}$
Viele gute Links und Informationen zu Regex findest du auch im Artikel in der Wikipedia.
mfg
webstarg
Hallo juetho,
versuche es mal mit dem ResourceManager. Siehe
Datei aus resource (Beitrag von Friedel)
mfg
webstarg
Hallo winSharp93,
ich glaube, das i++ in deinem Quelltext ist zu viel, da du ja im Kopf der for-Schleife i um 3 erhöhst.
grüße
webstarg
Hallo kolli,
Int64 ist das gleiche wie der Datentyp long.
Instanzierung:
long meineZahl = 600;
Konvertierung zu long:
long meineZahl = Convert.ToInt64("200000000");
Als Suffix für long kann L verwendet werden.
mfg
webstarg
Hallo,
trotz Suche im Web, habe ich den Unterschied zwischen diesen beiden Klassen noch nicht verstanden: ResourceManager (aus dem Namespace System.Resources) und ComponentResourceManager (aus dem Namespace System.ComponentModel)
Der ComponentResourceManager wird vom Designer verwendet.
Führen beide Klassen die gleiche Aufgabe aus?
Welche Klasse ist zu empfehlen?
mfg
webstarg
Original von ldr
Er meint wohl den Unterschied zwischen ENTER (neuer Absatz) und SHIFT+ENTER (neue Zeile) in Word.
Ja, genau.
Wenn ich aber eine Multi-Line-TextBox habe, dann unterscheidet diese wohl in Enter und Enter+Großschreibung, oder?
Ist \r\n == \n?
grüße
webstarg
Hallo!
Gibt es ein Escape-Zeichen für einen Zeilenumbruch (= Großschreibtaste + Enter)?
danke
webstarg
Danke für die Antwort.
MinimumSize wieder aufheben wäre demnach:
this.MinimumSize = new Size(0, 0);
webstarg
Hallo!
Nach Google, MSDN habe ich auf folgendes immer noch keine Lösung:
Kann man MinimumSize für ein Steuerelement auch nur einseitig (d.h. nur Height oder Width) festlegen? Wenn nein, was ist der größte mögliche Wert für die Eigenschaft, die nicht beschränkt sein sollte, bzw. kann man unendlich angeben? Wie kann man MinimumSize wieder aufheben?
danke im voraus
webstarg
Funktioniert jetzt endlich.
Danke für die Antworten.
webstarg
Labels und andere Windows-Forms der Klassenbibliotheken scheinen das aber zu benutzen (Label, Buttons, ...). So ist Font bei einem frisch erstellten Label zum Beispiel nicht fett (im Eigenschaftenfenster in der IDE, wo ein fettgeschriebener Wert bedeutet, dass der Wert != DefaultValue, ein normalgeschriebener Wert == DefaultValue ist).
P.S: Mit Color habe ich das gleiche Problem.
webstarg
Jetzt bin ich soweit gekommen, dass folgende Fehlermeldung kommt, wenn ich vor einem Font-Setter-Getter "[DefaultValue(new Font("Tahoma", 12))]" schreibe:
Ein Attributargument muss ein constant-, typeof- oder Arrayerstellungsausdruck sein. (CS0182)
Zu dieser Fehlermeldung findet man jedoch nichts nützliches. (Artikel nur in der englischen MSDN, es wird erklärt, wann der Fehler kommt, Abhilfe wird aber nicht aufgezeigt; Google findet auch nichts sinnvolles)
hoffe, ihr könnt mir helfen
webstarg
Original von langalaxy
ResourceManager rs = new ResourceManager("Standardnamespace.Resourcenordner.Resourcendatei", Assembly.GetExecutingAssembly());
Hallo!
Und wie gehe ich vor, wenn ich die Resourcen-Datei manuell (über Projekt/Hinzufügen/Neue Datei... "Leere Resourcen-Datei") mache? Was ist dann mein Standardnamespace und was der Resourcenordner?
mfg
webstarg
Hallo!
Ich stehe vor folgendem Problem:
Ich möchte den DefaultValue einer Eigenschaft festlegen, die vom Typ Size, Point, Font, ... ist. Diese Typen kann man jedoch nicht const erstellen und deshalb kann ich das im DefaultValue nicht angeben. Wie gebe ich dann den Standardwert an?
danke im voraus
webstarg
Original von Borg
Wenn du aber die gleiche TreeView in zwei Forms anzeigen willst, wäre es dann nicht besser die Oberfläche in zwei Teile zu teilen? Links der TreeView und rechts entweder TabPages oder Panels, die du je nach Bedarf ein- und ausblendest?
Das könnte ich auch machen...
Dann versuche ich das jetzt.
danke
webstarg
Hallo!
Ich habe folgende Frage: Werden WinForms bzw. UserControls immer als Referenzen übergeben? Und wie kann man sie als Value übergeben?
Ich habe eine MainForm, in der es einen TreeView gibt. Per Button-Klick wird Form1 geöffnet, dort sollte auch dieses TreeView sein.
Nun würde ich das dem Konstruktor übergeben, doch sobald ich das mache, verschwindet das Objekt in der MainForm.
Wie kann ich dieses Problem lösen?
danke
webstarg
Ich habe schon vor dem Posten andere Werte genommen.
z. B. 100.0/0.0254
und andere
Laut Openbook gibt man den Betrag zur Einheit 1/100 Zoll an.
mfg
webstarg
Hallo!
Beim folgenden Quelltextausschnitt erfolgt der Ausdruck gleich, wie wenn ich nichts eingestellt hätte. Links oben, ca. 0,5 cm von den Rändern entfernt. Wieso funktioniert das nicht? Die Zuweisung erfolgt (habe ich mit dem Debugger kontrolliert), die Seitenränder-Einstellung habe ich aus dem Galileo-Openbook.
public void DruckStarten()
{
PrintDocument doc = new PrintDocument();
doc.DefaultPageSettings.Margins.Top = (int) (2.0/0.0254);
doc.DefaultPageSettings.Margins.Left = (int) (2.0/0.0254);
doc.DocumentName = "Mein Druck";
doc.PrintPage += new PrintPageEventHandler(this.Printing);
doc.Print();
}
Das Printpage-Event zeichnet dann mit DrawLines und DrawString, ...
danke im Voraus
webstarg
Hallo Jamey!
Wenn nicht nur die Leerzeichen zu Beginn und am Ende eines Strings gelöscht werden sollen, so empfiehlt sich String.Replace(" ", "");
mfg
webstarg
Danke für die vielen Antworten.
Ich werde dann mal schauen was ich mache.
webstarg
Hallo!
Könntest du bitte auch noch kurz erklären, wie man dem Objekt ein Icon zuweist?
Dankeschön.
mfg
webstarg
Aber ich könnte die Properties mit einer private überschreiben, oder?
webstarg
Aha.
danke für die Antwort
webstarg
Hallo!
Wie kann man Properties von vererbten Klassen für Benutzer dieser Klasse unsichtbar machen? Also wenn ich eine Klasse habe, die von ComboBox erbt und ich möchte, dass der Benutzer dieser Klasse Items nicht sieht.
danke im voraus
webstarg
Hallo Quallo!
Nettes Codebeispiel. Ich habe es noch etwas aufgebohrt, sodass z. B. wenn alle Children Checked = true sind, Parent auch true wird.
void treeView1AfterCheck(object sender, TreeViewEventArgs e)
{
if(e.Action != TreeViewAction.Unknown)
{
CheckTreeNodeChildren(e.Node);
CheckTreeNodeParents(e.Node);
}
}
void CheckTreeNodeChildren(TreeNode CheckNode)
{
foreach(TreeNode CurrNode in CheckNode.Nodes)
{
//Children übernehmen Status von Parent
CurrNode.Checked = CheckNode.Checked;
//Children von Parent.Children übernimmt Status
CheckTreeNodeChildren(CurrNode);
}
}
void CheckTreeNodeParents(TreeNode CheckNode)
{
if(CheckNode.Parent != null)
{
bool checkState = CheckNode.Checked;
foreach (TreeNode TN in CheckNode.Parent.Nodes)
{
if (! TN.Checked)
{
checkState = false;
}
}
if (CheckNode.Checked == checkState)
{
//Alle Children haben den gleichen Status
CheckNode.Parent.Checked = checkState;
}
if (checkState)
{
//Parent ist Checked, Children übernehmen den Status
foreach (TreeNode TN in CheckNode.Parent.Nodes)
{
CheckTreeNodeChildren(TN);
}
}
//Parent von Parent macht die gleiche Prüfung durch
CheckTreeNodeParents(CheckNode.Parent);
}
}
mfg
webstarg
Hallo!
Wie kann man z. B. mit Focus() eine comboBox anspringen, wenn eine textBox vorhanden ist?
Focus() springt immer nur textBoxen an, wenn vorhanden.
Wie kann ich dann aber eine comboBox anspringen?
mfg
webstarg
Hallo norman_timo,
auch ich finde es schade, dass du vor hast, das Forum zu verlassen.
Weiterhin alles Gute.
webstarg