Laden...
W
webstarg myCSharp.de - Member
München, Deutschland Dabei seit 21.07.2006 558 Beiträge
Benutzerbeschreibung

Forenbeiträge von webstarg Ingesamt 558 Beiträge

09.09.2007 - 12:01 Uhr

Hallo P!lle,

Erstellen/Konfigurations-Manager... dann in der Tabelle in der Zeile deiner Anwendung bei Spalte Plattform in der Auswahlbox <Neu...> wählen, dann kannst du die Plattform (Itanium, x64, x86) auswählen.

mfg
webstarg

08.09.2007 - 11:32 Uhr

IconFX gefällt mir wirklich sehr gut.

Danke für den Tipp!

mfg
webstarg

07.09.2007 - 21:46 Uhr

System.Threading.Thread.Sleep(int time);

mfg
webstarg

07.09.2007 - 20:46 Uhr

Original von winSharp93
vielleicht soll das explizite = null für den Programmierer deutlicher machen, dass die Variable wirklich den Wert null hat (und nicht etwa ein Wertetyp ist).

Ok, das lass ich gelten. 😁 An structs habe ich nicht gedacht.

Danke für die beiden Antworten.
grüße
webstarg

07.09.2007 - 20:37 Uhr

Hallo Community,

mal wieder habe ich im Quellcode von Programmen eine Deklaration eines Objektes gesehen, das dann mit null initialisiert wird.

Button btn1 = null;

Das ist doch vollkommen sinnlos, oder?

Button btn1;

ist doch das selbe / scheint mir das selbe zu sein.

Oder?

mfg
webstarg

07.09.2007 - 20:16 Uhr

Danke winSharp93. Das nächste mal schaue ich bei solchen Fragen mich vorher im Reflector um. 😉

Dann ist die statische Methode wohl fast sinnfrei.

grüße
webstarg

07.09.2007 - 20:14 Uhr

Kenn mich mit ASP.NET nicht besonders aus, aber versuch mal die Eigenschaft OnClientClick zu setzen. In der VS-Beschreibung steht: "Das clientseitige Skript, das bei einem clientseitigen OnClick ausgeführt wird." Vielleicht wird dann der Skript anstelle eines Events (und somit eines Postbacks) ausgeführt.

grüße
webstarg

07.09.2007 - 20:03 Uhr

Hallo,

naja, der Titel verrät eigentlich schon die Frage:

Bei der Benutzung von Regex, soll man die statischen Methoden nehmen oder eine Instanz erstellen und dann die Methoden verwenden.

Eine Instanz, wenn man vorhat, den Regex öfters zu benutzen?
Oder wenn man öfters den gleichen Pattern hat?
Oder wenn Speicherverbrauch unwichtiger als Leistung sein soll?

Danke im Voraus für die Antworten.
webstarg

06.09.2007 - 21:32 Uhr

Hallo!

Mich würde interessieren, welche Programme ihr zum Erstellen von Icons verwendet.
Mit Visual Studio, mit einem Grafikprogramm und einer anschließenden Konvertierung oder mit einem eigenen Programm.

Gestern bin ich über ein nettes Icon-Programm gestoßen: VariIconsReload. Zwar nicht sonderlich benutzerfreundlich, aber relativ mächtig. (Übrigens in .NET geschrieben)

grüße
webstarg

06.09.2007 - 21:27 Uhr

Sorry, Leute!

Das Problem war mein Icon. Wie JunkyXL sagt, das Icon ist effektiv 16x16.

Und dieses Icon ist stark verkleinert das Symbol in meinem Screenshot.

Danke für eure Antworten.
webstarg

Icon war:

05.09.2007 - 20:06 Uhr

Hallo!

Mit SharpDevelop (mit VS Express ist folgendes identisch!):
Ich weise im Property-Grid das Icon (das ich mit einem OpenFileDialog auswähle) der Property Icon zu. Explorer-Symbol ok, Anwendungssymbol (Taskleiste und Symbol links oben in der Titelleiste) entsprechen dem Screenshot in meinem vorherigen Post. Das Problem habe ich mit verschiedenen IDEs: #D 2.0, 2.1, 2.2, VS Express 2005, Visual Studio 2003.
Das Icon habe ich übrigens mit VS 2003 erstellt, es müsste schon in Ordnung sein.

In der Resourcendatei wird das Icon korrekt hinzugefügt, Größe 32x32, Typ System.Drawing.Icon

Code in partieller Designer-Klasse (in InitializeComponent):


System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
//...
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));			

Auch mit manuellem Hinzufügen das selbe:
Im Konstruktor von Form1:


System.Resources.ResourceManager resources = new System.Resources.ResourceManager("projekt2.Resource", System.Reflection.Assembly.GetExecutingAssembly());
			this.Icon = (Icon) resources.GetObject("App");

mfg
webstarg

05.09.2007 - 19:36 Uhr

Events könnte man schon deregistrieren. Mit -=

Ich denke, 0815Coders Lösung wird aber die performantere sein, v. a. wenn es sich nur um eine kurze Zeitspanne (kurze deaktivierte Zeit) handelt.

mfg
webstarg

05.09.2007 - 19:33 Uhr

@ herbivore: Oh, danke. Das spart ziemlich Code.

mfg
webstarg

05.09.2007 - 19:29 Uhr

Original von CyberHunter
du könntest doch auch einen Button platzieren, die Dock Eigenschaft auf Fill setzten und dem Button ein BackgroundImage verpassen.

Außerdem würde das viel schlechter aussehen. Grafiken in der PictureBox und im Button (als Hintergrund) haben einen ziemlichen Qualitätsunterschied.

mfg
webstarg

04.09.2007 - 20:36 Uhr

Original von webstarg
Oh, so einfach gehts...
Perfekt.

Nein, wäre zu schön.
Das Icon ist in der Resourcendatei vorhanden, auch wenn ich im Visual Studio (oder SharpDevelop) im Property-Grid der Form bei der Eigenschaft Icon das Icon zuweise habe ich das selbe Problem.

mfg
webstarg

Problem siehe Screenshot (anstatt des (gewünschten) Icons dieses Icon):

04.09.2007 - 20:27 Uhr

Nein ich glaube er meint, dass wenn man auf den Button klickt und die Maus noch nicht loslässt dann wird der Button "eingedrückt" dargestellt. Dies geht erst weg, wenn man die Maustaste loslässt oder den Button verlässt.

Dazu musst du die Maus-Events verwenden:
MouseDown
MouseLeave
MouseUp

Für das Eindrücken kannst du vielleicht die Eigenschaft FlatStyle verwenden. Wenn dir diese nicht zusagt, so müsstest du das Zeichnen selbst übernehmen.

mfg
webstarg

03.09.2007 - 20:19 Uhr

Oh, so einfach gehts...
Perfekt.

thx
webstarg

03.09.2007 - 20:17 Uhr

Hallo thfu,

um Komponenten hinzuzufügen, muss die Steuerelement-Klasse public sein.

Also nicht


class Komponente : System.Windows.Forms.UserControl {}

sondern


public class Komponente : System.Windows.Forms.UserControl {}

Funktioniert es jetzt?

Vielleicht hilft dir folgendes weiter: [Artikel] Benutzen von UserControls / abgeleiteten Controls im Designer von Visual Studio 2

grüße
webstarg

02.09.2007 - 12:19 Uhr

Original von dr4g0n76
Links oben im Consolenfenster funktioniert es mit folgendem Code:

  
        [DllImport("user32.dll")]  
        private static extern int SendMessage(IntPtr hwnd, int message, int wParam, IntPtr lParam);  
  
        [DllImport("user32.dll", ExactSpelling = true)]  
        private static extern IntPtr GetWindow(IntPtr hwnd, int cmd);  
  
        private const int WM_SETICON = 0x80;  
        private const int GW_OWNER = 4;  
        private const int ICON_SMALL = 0;  
        private const int ICON_BIG = 1;   
  
        static void Main(string[] args)  
        {  
            IntPtr ptr = Process.GetCurrentProcess().MainWindowHandle;  
            SendMessage(ptr, WM_SETICON, ICON_BIG, new Icon(@"C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\GAEB-Viewer\Temp\err.ico").Handle);  
            MessageBox.Show("Hallo");  
        }  
  

Muss man bei **Windowsanwendungen **auch diesen Weg für das Symbol links oben in der Anwendung zu setzen?

In der Projektoptionen (VS 2005 Express) wird nur das Icon für den Windows Exlorer gesetzt.

mfg
webstarg

01.09.2007 - 21:22 Uhr

Original von Bibi1911
Irgendwie funktioniert das bei mir nicht...

Was genau funktioniert nicht?

webstarg

01.09.2007 - 14:42 Uhr

Hallo fflush,

die letzte Zeile in der Methode (returnObj.Dispose()😉 ist sicherlich sinnlos, da die Methode bereits bei return (Zeile vorher) verlassen wird.

Public returnObj TestMethode()

Diese Zeile müsste eigentlich public object TestMethode() lauten.

Wenn du ein Objekt hast, das du nur kurz in einer Methode benötigst und das IDisposable implementiert hat, kannst du es so verwenden:


using (System.IO.StreamWriter sw = new System.IO.StreamWriter())
{

//sw wird nach dem Verlassen dieses Blocks automatisch disposed
}

Die anderen Fragen kann ich leider nicht beantworten.

mfg
webstarg

01.09.2007 - 14:33 Uhr

Original von Angelz
Eingefrohrene UI's sind in der Regel auf folgende Ursachen zurückzuführen:
...

  • Endlos-Loop
    ...

Das rekursive Abfragen der ganzen Unterverzeichnisse ist natürlich keine Endlosschleife, aber es sind halt jede Menge Anfragen zu tätigen. Daran wird's wohl liegen.

Ja, daran liegts. Das Problem kann man aber (mit Threads) beheben:

[FAQ] Warum blockiert mein GUI?

webstarg

27.08.2007 - 20:19 Uhr

Original von herbivore
du brauchst eine negative Lookahead-Bedingung.

Also (?![Bedingung]).

(?! )

(Siehe auch: [Artikel] Regex-Tutorial Kapitel 4.13.2)

grüße
webstarg

27.08.2007 - 18:49 Uhr

Sowohl die BBC-Code-Version als auch die PDF-Version habe ich aktualisiert.

**BBC-Code:***Rechtschreibfehler entfernt *Inhaltsverzeichnis entfernt (Seiten gibt es sowieso nicht)

**PDF-Version:***Rechtschreibfehler entfernt *Formatierungsfehler behoben *Seitenzahlen korrigiert und die Absatzvorlage Überschrift genommen und mit Word die Seitenzahlen erstellt, damit diese auch nach Bearbeitungen noch stimmen *Adresse von sämtlichen Links (anstatt den Anzeigenamen) angegeben (da man im PDF nicht auf die Links klicken kann)

webstarg

26.08.2007 - 19:40 Uhr

_Original von LukeGee_Was haltet ihr von dem Einblendeeffekt der Fenster? Ist es ok, oder nervt es?

Nein, es nervt nicht.

Dein Programm ist mittlerweile wirklich sehr gut! 👍 👍

grüße
webstarg

22.08.2007 - 20:38 Uhr

10-Finger-System: Ich kann zwar einigermaßen schnell schreiben, ohne meinen vielen Tippfehlern wäre ich aber noch schneller.

Your score: 304 keys per minute ~ 60 words per minute
Language/mode: de

Bei Wörter: 311 kpm

Bei engl. Wörter: 222 kpm

webstarg

22.08.2007 - 20:22 Uhr

Dann musst du in der ersten Zeile links auf die graue Leiste klicken, sodass ein roter Punkt kommt und die Zeile wird auch rot. Somit hast du einen Breakpoint gesetzt.

Dann startest du das Debuggen mit F5.

Im Menü sind dann noch einige interessante Funktionen bei Ansicht/Debug.

Z. B. Lokale Variablen oder Threads.

grüße
webstarg

22.08.2007 - 20:16 Uhr

Ich sehe da keinen Fehler, es müsste also schon funktionieren.

Was sein könnte: Gibt es diese Datei nicht?

webstarg

22.08.2007 - 20:02 Uhr

Ja, je nach dem, wie du es machst.

System.Text.StringBuilder newString = new System.Text.StringBuilder();
foreach (char x in "asfdlökljkz3948kdfkl$@ksdlfö***++++#.,-<<-''#aää")
{
  //hier mit regex überprüfen
  //oder mit einem String wie "abcdef" und dann darauf IndexOf verwenden
  //char nach int konvertieren und überprüfen, ob er im Wertebereich liegt (siehe meine vorherige Antwort; die Zahlen im for-Kopf sind jedoch erfunden, die müsstest du mit einer Schleife einfach herausfinden

//wenn Bedingung positiv:
newString.Add(x.ToString());
}

grüße
webstarg

21.08.2007 - 18:30 Uhr

wobei du bei dieser Lösung immer noch die Zeichen angeben musst.

Vielleicht liegen die meisten Zeichen in der ASCII-Tabelle nebeneinander und du könntest die meisten mit einer for-Schleife machen:

for (int i = 100; i < 120; i++)
{
myString = myString.Replace(Convert.ToChar(i).ToString(), "");
}

(Umlaute und ß muss man natürlich anders machen.

grüße
webstarg

21.08.2007 - 18:24 Uhr

@ punkdevil:

Was ist alles deutsch? Nur die Überschrift? (Dies wäre nämlich eine Property.)

Bei mir funktioniert das auch: Win XP SP2 deutsch, .NET 2.0, .NET 2.0 German Language Pack

mfg
webstarg

20.08.2007 - 17:16 Uhr

Hallo xtribe,

mit Substring sollte es schon funktionieren:

title = title.Substring(0, title.IndexOfAny(new char[] {'(', '['}));

Alternativ wie im Titel von dir bereits angedeutet: Regex:

Pattern: @"[([]*" (nicht getestet)
Verwendung der Methode Match, vom Rückgabewert liest du die Eigenschaft Value aus. Diese enthält den Text.

mfg
webstarg

20.08.2007 - 17:08 Uhr

Hallo!

@ all:
Das Tutorial wurde aktualisiert.

@ Froggi:

Erstmal muss ich sagen, dass dieses Tutorial wirklich sehr gut ist. Mir hat es auf jeden Fall mehrere Stunden googlen erspart. Ich hoffe es wird auch weiterhin gepflegt von dir!

Danke! Ja, ich werde es weiterhin pflegen.
Den Grammatikfehler habe ich übrigens berichtigt.

@ Stipo:
Auch danke für das Lob.
Ich habe mir erlaubt, deinen Buchtipp im Tutorial unter Punkt 8 (Literatur) einzufügen.

@ ikaros:
Beim Durchnehmen der Änderungen habe ich auch einen Blick auf den Punkt "Escape-Zeichen" geworfen. Eine kurze Erklärung zu Escape-Sequenzen ist bereits enthalten:

Unter „Escapen“ versteht man, dass die Meta-Bedeutung eines Zeichens aufgehoben wird und dass das Zeichen als solches dargestellt wird.

(Falls du es gerne ausführlicher hättest, kannst du mir gerne ein paar Sätze dazu senden, die ich dann einbauen würde.)

Danke für das viele Feedback.

Viele Grüße
webstarg

20.08.2007 - 16:30 Uhr

Original von Sebastian K.

Fehler 1 Nicht erkannte Escapesequenz. C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2005\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs 12 67 ConsoleApplication3

Am besten gibst du vor den Regex-String ein @, denn wenn du Backslash und andere Zeichen (Anführungszeichen) noch mit Backslash escapen willst, dann schaut der Pattern (das Regex-Muster) nicht mehr wirklich übersichtlich aus (und beim Überarbeiten des Regex-Patterns kommt dann Verwirrung auf...).

grüße
webstarg

20.08.2007 - 16:17 Uhr

Hast du eine Referenz auf System.Windows.Forms?
(Kann auch sein, dass das inzwischen automatisch hinzugefügt wird, sobald du ein Form hinzufügst.)

webstarg

12.08.2007 - 19:06 Uhr

Hallo b-oern,

deine Eigenschaft lautet Dock.

grüße
webstarg

11.08.2007 - 19:49 Uhr

Original von ikaros
Gute Arbeit.
Ein so allgemeinverständliches(naja: nach dem ersten Einstieg) und gleichzeitig tiefgehendes Tutorial ist selten.

Danke.

Was ein wenig fehlt ist die Einstiegshilfe(zB: Escape-Sequenz - was ist das, Regex - was ist das).

Zu Regex gibt es bereits eine kurze Einleitung (Kapitel 1):

  1. Was ist Regex?
    Regex ist die Abkürzung für „Regular Expressions“, zu Deutsch: „Reguläre
    Ausdrücke“.
    Es ist eine Zeichenkette, die der Beschreibung von Mengen beziehungsweise
    Untermengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient.
    (Wikipedia)

Regex ist ein mächtiges Mittel zum Validieren und Bearbeiten von Zeichenketten.

Gut, vielleicht etwas kurz. 😉

Die Escape-Sequenzen kann ich schon noch etwas ausbauen. Mache ich demnächst.

mfg
webstarg

10.08.2007 - 12:26 Uhr

Ja, genau.

Benötigt wird noch eine (COM-)Referenz auf Windows Script Host Object Model.

(PS: Artikel auf Codeproject)

mfg
webstarg

10.08.2007 - 12:19 Uhr

@ MinusBrain: Vielen Dank, das stimmt natürlich. Habe ich ausgebessert.

grüße
webstarg

10.08.2007 - 11:56 Uhr

Hallo,

ich habe ein Problem mit einer Eigenschaft vom Typ Collection in einem Steuerelement. Die Collection habe ich selbst erstellt und sie verfügt über alle Methode die CollectionBase auch hat (Indexer, Add, AddRange, Remove, RemoveAt, Insert, Contains, ...).

Diese Collection-Klasse ist public.
Ein Steuerelement enthält eine Instanz (private) von dieser Collection sowie einen setter/getter (natürlich public) dazu.

Wenn ich das Steuerelement zur Komponentensammlung der IDE hinzufügen und dann das Element auf eine Form ziehe, klappt noch alles. Wenn ich aber im Eigenschaftsfenster auf die Eigenschaft Items gehe (diese Eigenschaft ist vom Typ meiner Collection), dann kann ich wie gewohnt Items hinzufügen (wie auch bei ListView die ListViewItems). Nachdem ich aber auf OK klicke, erstellt der Designer in der Klasse folgende (wenig sinnvolle) Zeile

new MyNamespace.MyCollection().Add(myCollectionItem1);

anstelle der sinnvolleren (und von mir gewünschten Variante:

mySteuerElement1.Items.Add(myCollectionItem1);

Das Problem tritt sowohl in Visual Studio 2005 Express als auch in SharpDevelop 2.2 auf.

Ich hoffe, ihr könnt mir helfen.

mfg
webstarg

09.08.2007 - 19:37 Uhr

Ich mache Verknüpfungen immer mit Hilfe der dll IWshShortcut.

Mit Google findet man Erklärungen dazu.

grüße
webstarg

07.08.2007 - 22:18 Uhr

Ok, dankeschön.
webstarg

07.08.2007 - 22:13 Uhr

Hallo,

da ich mit der Forensuche nichts dazu gefunden habe, frage ich mal ob es einen ("effektiven") Unterschied dieser beiden Methoden gibt und welche Methode zu bevorzugen ist.

webstarg

06.08.2007 - 18:40 Uhr

_Original von dr4g0n76_Beschreib mal genauer was Du vorhast.

Mein UserControl soll die Größe automatisch anpassen. Der Benutzer soll im Designer nicht über die Größe entscheiden.

Danke für die Lösungsansätze.

webstarg

06.08.2007 - 11:42 Uhr

Hallo Community,

gibt es eine Möglichkeit, dass der User/Programmierer die Größe eines Steuerelementes nicht verändern kann. So etwas wie es in der Klasse Form bei FormBorderStyle FixedSingle gibt.
Minimum und Maximum-size eignet sich nicht gut, da das Steuerelement "selbst" die Größe (ohne großen Aufwand) anpassen können soll.
Auf das SizeChanged-Event reagieren wäre notfalls eine MÖglichkeit.
Gibt es jedoch eine bessere Lösung?

grüße
webstarg

05.08.2007 - 21:00 Uhr

Hallo KingPin,

für Veränderung an Dateien:
Klasse: FileSystemWatcher

grüße
webstarg

04.08.2007 - 20:32 Uhr

Beschreibung:

Dieses Code-Snippet speichert in die Variable wert den String, den man bei komplexen Datentypen im DefaultValue-Attribut als value angeben muss. Benötigte using-Direktiven: System.ComponentModel, sowie System.Drawing, wenn der Typ Point, Color, Font, Size, ... ist.

string text = TypeDescriptor.GetConverter(typeof(Font)).ConvertToInvariantString(new Font("Tahoma", 9F, FontStyle.Bold));

Verwendung oberhalb von Properties:

[DefaultValue(typeof([Typ]), [Inhalt der Variable text (in hartcodierter Form])]

Wenn es sich jedoch um eine einfachen Datentyp handelt (bool, string, int, ...), so kann man es so "besser" angeben:

[DefaultValue([Wert])]

(Siehe auch: Attribut [DefaultValue] bei Size, Point, ...)

Schlagwörter: DefaultValue

04.08.2007 - 20:31 Uhr

Erstmal vielen Dank an alle, die mir versucht haben bei diesem Problem zu helfen (und besonders an ldr).

Der Code von ldr war es fast. 😉
Ganz ist es dieser:

Tahoma, 9pt, style=Bold

Also [DefaultValue(typeof(Font), "Tahoma, 9pt, style=Bold")].

Herausgefunden habe ich es, indem ich im Reflector die Klasse DefaultValueAttribute gefunden habe und dann irgendwo den Methodenaufruf ConvertFromInvariantString gesehen habe. Dann habe ich gedacht, der umgekehrte Weg wird wohl auch gehen. Ging dann auch mit

TypeDescriptor.GetConverter(typeof(Font)).ConvertToInvariantString(new Font("Tahoma", 9F, FontStyle.Bold));

Nochmals dankeschön.

mfg
webstarg

[Ergänzung: Die Klasse TypeDescriptor liegt übrigens in System.ComponentModel.]

02.08.2007 - 19:17 Uhr

Hallo Leute,

ist die if-Bedingung in dieser Property sinnvoll, oder wird set nur aufgerufen, wenn sich der Wert effektiv verändert hat?


public string MyString
{
  set
  {
    if (this.myString != value)
    {
      this.myString = value;
    }
  }
  get
  {
    return this.myString;
  }
}

mfg
webstarg

01.08.2007 - 20:59 Uhr

Hallo ldr,

habe folgendes mal getestet, ohne Erfolg:

[DefaultValue("Microsoft Sans Serif; 9pt; style=Bold, Italic, Underline")]
		public Font fonta
		{
			set {}
			get
			{
				return new Font("Microsoft Sans Serif", 9F, FontStyle.Bold | FontStyle.Italic | FontStyle.Underline);;
			}
		}
		
		[DefaultValue("Microsoft Sans Serif; 8.25pt; style=Bold, Italic, Underline")]
		public Font fontb
		{
			set {}
			get
			{
				return new Font("Microsoft Sans Serif", 9F, FontStyle.Bold | FontStyle.Italic | FontStyle.Underline);	
			}
		}

Ich habe aber herausgefunden, wo das Problem liegen könnte: Schriftgröße

Schriftgröße 9pt sei 8.25F
(habe das auch erfolglos getestet)
(viell. muss man im String die Größe ohne pt angeben?)

mfg
webstarg

[Edit="Vergessenes "o" in Microsoft eingefügt und damit getestet; auch nichts"]