Laden...
Avatar #avatar-2094.gif
progger myCSharp.de - Member
Schüler Nähe von München Dabei seit 05.08.2005 1.271 Beiträge
Benutzerbeschreibung

Forenbeiträge von progger Ingesamt 1.271 Beiträge

13.10.2006 - 16:39 Uhr

Hallo linen,

Das heißt, dass deine Anwendung gerade "hängt", etwas sehr aufwendiges im GUI-Thread macht. Das tritt auch bei Debugging auf, weil deine Anwendung da ja auch "hängt". Deswegen kann das Fenster nicht mehr neugezeichnet werden und erscheint somit weiß.
Du könntest deine aufwendigen Operationen in einen extra Thread auslagern. Dann musst du aber per (Begin-)Invoke auf deine Controls zugreifen, siehe dazu auch [FAQ] Controls von Thread aktualisieren lassen (Invoke-/TreeView-Beispiel).

Gruß,
Thomas

12.10.2006 - 15:28 Uhr

Hallo pred1980,

MSDN/SDK-Doku
The arc is traced along the perimeter of the ellipse bounded by the specified rectangle. The starting point of the arc is determined by measuring clockwise from the x-axis of the ellipse (at the 0-degree angle) by the number of degrees in the start angle. The endpoint is similarly located by measuring clockwise from the starting point by the number of degrees in the sweep angle. If the sweep angle is greater than 360 degrees or less than -360 degrees, the arc is swept by exactly 360 degrees or -360 degrees, respectively.

Du musst also -90° nehmen, um den Bogen in die andere Richtung zu zeichnen. Alles andere solltest du eigentlich oberem Text entnehmen können.

Gruß,
Thomas

Nachtrag: Selber Text auf Deutsch:

MSDN/SDK-Doku
Der Bogen wird entlang des Umfangs der Ellipse beschrieben, die durch das angegebene Rechteck umschlossen wird. Der Anfangspunkt des Bogens wird bestimmt, indem von der x-Achse der Ellipse (beim Winkel von 0 Grad) im Uhrzeigersinn die Gradzahl im Startwinkel gemessen wird. Der Endpunkt wird auf ähnliche Weise ermittelt, indem vom Anfangspunkt ausgehend im Uhrzeigersinn die Gradzahl des Krümmungswinkels gemessen wird. Wenn der Krümmungswinkel größer als 360 Grad oder kleiner als -360 Grad ist, wird der Bogen um genau 360 Grad bzw. -360 Grad gekrümmt.

12.10.2006 - 15:22 Uhr

Hallo mattulla,

Zu 1.: Du kannst alle Pixel eines Bitmaps durchgehen und die Farbe abfragen (per GetPixel, -> Forumsuche nach "GetPixel" für effektivere Möglichkeiten). Allerdings wirst du bei 256³ (~16,7 Mio)* sehr, sehr viele Farben haben, die nicht in deinem Bild vorkommen.

Zu 2.: Wenn du die Farbe eines Pixels (per GetPixel) abfrägst, bekommst du ein Color-Objekt. Das hat eine Eigenschaft A, die den Wert des Alpha-Kanals zurückgibt.

Gruß,
Thomas

* Frage an alle: Sind es, wenn man den Alpha-Kanal mit einrechnet eigentlich 256^4 Farben?

11.10.2006 - 18:21 Uhr

Hier noch der Link dazu: PushOK.
Weswegen ich eigentlich antworte, ist, dass ich eigentlich dachte, dass es kommerziell ist. Ich hab jetzt auf der Internetseite geschaut (wollte eigentlich den Preis herausfinden) und bin auf widersprüchliche Aussagen gestoßen. Weiß da jemand bescheid und kann mich diesbezüglich aufklären?

11.10.2006 - 14:29 Uhr

Original von LastGentleman
Es gibt aber Gratis alternativen CVS oder SubVersion. Die haben leider keine VS Unterstützung.

Das stimmt so nicht ganz. Für Subversion zumindest gibt es ein VS-Addin: AnkhSVN. Für die neueste Version solltest du aber mit Subversion 1.4 arbeiten, da es sonst Konflikte gibt. Außerdem kann ich dir noch TortoiseSVN empfehlen. Das ist ein in den Windows Explorer integrierter SVN-Client.

10.10.2006 - 20:00 Uhr

Hallo Bubgar,

Als SDK-Doku wird hier normalerweise die Dokumentation aus dem .NET Framework SDK bezeichnet. Du findest sie bei installierstem SDK unter "Start" -> "Programme" -> ".NET Framework SDK <version>" -> "Documetation". Alles was in der SDK-Doku steht, steht aber auch in der MSDN-Library. Die gibt es als Offline-Version (zusammen mit VS oder also Online-Version unter http://msdn2.microsoft.com/de-de/default.aspx bzw. http://msdn2.microsoft.com/en-us/default.aspx

Gruß,
Thomas

10.10.2006 - 19:46 Uhr

Hallo david.ka,

Du kannst auch MSBuild verwenden, allerding brauchst du dazu MSBee (siehe dazu TIPP: .NET 1.1 mit VS2005).

Gruß,
Thomas

10.10.2006 - 14:50 Uhr

Hallo,

Das Andocken zu programmieren sollte kein Problem sein, ist recht simpel.
Wie du die Position, an dem das Fenster erscheint, manuell festlegst, solltest du eigentlich nach deiner Frage in Position, an der ein Fenster erscheint genau bestimmen wissen.

Gruß,
Thomas

09.10.2006 - 18:09 Uhr

Hallo Puppetmaster,

Die Einstellung ist im Menü unter "Edit" -> "Advanced" -> "View White Space", die Tastenkombination dazu ist bei mir CTRL + E, S.

Gruß,
Thomas

09.10.2006 - 17:59 Uhr

Hallo Murray 'Boz' Bozinsky,

Dass sich die Fenster vergrößern, sobald du sie aufrufst, kann ich nicht nachvollziehen.
Wenn du die Größe eines Fensters (egal ob MDI-Child oder normales Fenster) nach oben hin einschränken möchtest, machst du das am besten über die Form.MaximumSize-Eigenschaft.

Gruß,
Thomas

08.10.2006 - 19:54 Uhr

Hallo BAUHAUS,

Ja, man kann von jeder (nicht-weiterbehandelten) .NET-Assembly den (fast kompletten) Code herausbekommen (z.B. mit Lutz Roeder's .NET Reflector).
Das liegt daran, dass der Code nicht in Maschinencode, sondern in eine "Zwischensprache", die sogenannte "(Microsoft/Common) Intermediate Language" (kurz MSIL, CIL oder einfach nur IL). Siehe auch http://de.wikipedia.org/wiki/MSIL#CLR.2C_CIL_und_Reflection.
Dieser Code lässt sich auslesen und in die Syntax einer Sprache wie C# zurückverwandeln.

Gruß,
Thomas

08.10.2006 - 19:33 Uhr

Hallo kognitio,

Zu Frage 1: ClassCastException scheint eine Java-Klasse zu sein (siehe auch http://msdn2.microsoft.com/en-us/library/ms245767.aspx ) daraus schließe ich, dass du in J# programmierst (und auch aus deiner Syntax). Deswegen kann ich dir dazu nicht allzuviel sagen, außer, dass es noch andere Möglichkeiten gibt. Z.B.:

typeof(Sorting).IsInstanceOfType(o)

Ich kann dir aber nicht garantieren, dass das so auch in J# geht.

Zu Frage 2: Siehe [FAQ] Kommunikation von 2 Forms.

Gruß,
Thomas

08.10.2006 - 19:21 Uhr

Hallo Kostas,

Dasgleiche Problem hatte ich auch mal, siehe ListBox.Dock Problem. In dem Thread ist auch ein Lösungsvorschlag, der bei mir funktioniert hat.

Gruß,
Thomas

08.10.2006 - 18:50 Uhr

Hallo royal,

Zum Zeichnen möchte ich dir auch noch das [Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox) ans Herz legen.
Fürs Scrollen schau dir mal auf ein Panel mit gdi+ zeichnen an, ich hoffe das hilft dir weiter.
Zu Vektorgrafik: Es gibt kein Control im .NET-Framework, das Vektorgrafiken irgendeines Typen anzeigt. Du musst entweder auf Third-Party-Controls zurückgreifen oder alles selbst zeichnen.

Gruß,
Thomas

08.10.2006 - 10:19 Uhr

Hallo Lion1984,

ClickOnce ist kein Setup! Siehe auch Wikipedia: ClickOnce.
Eine Forumsuche nach "Setup" sollte einges an Informationen liefern. Weitere Suchbegriffe (auch für Google) sind "WiX" und "NSIS" (wobei ich dir vor allem WiX nahelegen würde).

Gruß,
Thomas

06.10.2006 - 16:31 Uhr

Das dürftest du leicht über die Forumsuche herausfinden können. Z.B. nach "Image" oder "Bitmap" und "MemoryStream".

05.10.2006 - 17:12 Uhr

Hallo can320,

Es gibt in VS (und nicht nur in der Express Edition) keine Funktion, die das ermöglicht.
In den nicht Express Editionen kannst du dafür AddIns einsetzen.

Gruß,
Thomas

04.10.2006 - 19:10 Uhr

Hallo Stefan,

Du könntest (wie herbivore gesagt hat) die Pixel alle durchlaufen. Dann nimmst du den RGB-Farbwert und wandlest ihn in einen HSL/HSB-Farbwert um (Color.GetHue/Saturation/Brightness() oder selbst). Dann veränderst du die Helligkeit (Brightness bzw. Lightness) und wandelst alles wieder in einen RGB-Farbwert um (das geht nicht mit dem .NET-Framework, Formeln sollten sich aber im Internet finden lassen) und setzt diesen neuen Wert.
Ich hab das nicht ausprobiert, müsste aber theoretisch funktionieren.

Gruß,
Thomas

04.10.2006 - 18:09 Uhr

Hallo Teilzeitstudent,

Siehe auch DockPanel Suite. Ansonsten benutz die Forumsuche mit "Docking" oder vergleichbarem.

Gruß,
Thomas

03.10.2006 - 11:55 Uhr

Hallo Schäd'l,

Du musst die AllowMerge-Eigenschaft auf false stellen. Les dir am besten die Beschreibung in der SDK/MSDN-Doku durch.

Gruß,
progger

02.10.2006 - 17:20 Uhr

Hallo Eckhard,

Les dir dazu am besten mal etwas über Generische Typen durch: Kapitel Generics in Visual C#.

Gruß,
progger

02.10.2006 - 14:04 Uhr

Hallo Chris,

Bitte schreibe keine Fragen in ein Tutorial, die nicht direkt das Tutorial betreffen! Mache immer einen neuen Thread auf!

Genau habe ich deine Frage nicht verstanden, aber ich versuchs mal:
Probier folgendes:


public void Ausgeben()
{
  Console.WriteLine("{0} + {1} * i = {3}", real, imaginaer, real + imaginaer * i);
}

Allerdings weiß ich nicht, was du mit "i" meinst.

Gruß,
progger

01.10.2006 - 19:31 Uhr

Hallo Ludwig,

Die Anweisung zur Konvertierung ist falsch. Es sollte so heißen:

Button Knopf = (Button)sender;

Lies dir dazu vielleicht auch mal das Kapitel Typumwandlung im Visual-C#-Openbook durch.

Gruß,
Thomas

01.10.2006 - 19:25 Uhr

Hallo Schattenkanzler,

Was du willst, ist glaub ich Thread.Join.

Gruß,
Thomas

01.10.2006 - 19:20 Uhr

Hallo Lothi,

Überschreiben ist schon der richtige Ansatz, du musst es nur ein bisschen anders machen:


using System.ComponentModel;
//...
[DefaultValue(false)] <- das ist das wichtige!
public override bool AutoSize {
  get { return base.AutoSize; }
  set { base.AutoSize = value; }
}

Zur Erklärung: Der Standardwert im Designer ist nicht der Wert, den diese Property beim ersten Mal zurückgibt, sondern eben der im DefaultValueAttribute definierte Wert.

Gruß,
Thomas

01.10.2006 - 17:50 Uhr

Hallo wurstpeter,

Wie du den Desktop als Bitmap bekommst, kannst du in dem Sourcecode von Eine Lupe mit C#.
Die Farbe kannst musst du dann raussuchen, effiziente Möglichkeiten bekommst du, wenn du im Forum nach "GetPixel" suchst.

Gruß,
Thomas

01.10.2006 - 17:33 Uhr

Hallo liam,

Ich weiß jetzt nicht, ob ich dein Problem komplett verstanden habe, denke aber, dass es so gehen müsste:

Type objClassType = Type.GetTypeFromProgID("Excel.Application");
MethodInfo mi1 = objClassType.GetMethod("M1", BindingFlags.Public | BindingFlags.Instance);

Gruß,
Thomas

30.09.2006 - 12:39 Uhr

So lässt sich meine Idee natürlich nicht anwenden. Aber ich verstehe auch nicht, warum du noch den 'Mechanismus' von VS verwendest, wenn du die Konfiguration sowieso selbst einliest und veränderst. In deinem Fall würde ich wirklich selbst speichern.

30.09.2006 - 11:49 Uhr

Hallo daywa1k3r,

Eine Idee: Du machst die Konfiguration in einer Klassenbibliothek, die Settings-Klasse public und referenzierst in den beiden WindowsForms-Projekten diese Klassenbibliothek.

Gruß,
Thomas

30.09.2006 - 11:20 Uhr

Hallo antopa,

Du solltest mit den BalloonTips aber nichts wichtiges anzeigen, denn man kann das Anzeigen von BalloonTips systemweit unterbinden. Siehe dazu auch toolTip.IsBallon funktioniert nicht

Gruß,
progger

26.09.2006 - 16:40 Uhr

Noch mal für den Vergleich der Standard mit der Professional Version: Visual Studio 2005 - Die Produktlinien und was sie bieten.

25.09.2006 - 14:02 Uhr

Meins ist auch da! Sind diese CDs schön anzuschauen, fast so wie bei Office!

23.09.2006 - 12:30 Uhr

Bei mir ist das überhaupt kein Problem (FF 1.5.07 ohne Werbeblocker). Schalt den Werbeblocker mal kurz aus und versuchs dann, vielleicht hat der Probleme mit der Seite.

20.09.2006 - 14:30 Uhr

Ich hab auch noch nichts bekommen 🙁 Warte aber auch schon drauf.

19.09.2006 - 19:34 Uhr

Hallo Golo,

Da kann ich mich nur voll anschließen: Herzlichen Dank für die Zeit, in der du myCSharp administriert hast! Du hast das wirklich spitzenmäßig gemacht!

Ich wünsche dir weiterhin alles Gute und hoffe natürlich (und gehe einfach mal davon aus), dass du myCSharp nicht vollkommen den Rücken zukehrst.

Gruß,
progger

18.09.2006 - 14:52 Uhr

Du musst das PictureBox.Image in ein Bitmap konvertieren, dann kannst du über Bitmap.GetPixel(x, y) die Farbe eines bestimmten Pixels rausfinden. Wenn du das nur bei ein paar Pixeln machen möchtest, ist diese Lösung kein Problem. Solltest du aber sehr aufwendige Sachen damit machen wollen (alle Pixel auslesen, wieder setzen, usw.), solltest du alternative Methoden verwenden. Diese findest du, wenn du im Forum nach "GetPixel" suchst.

18.09.2006 - 14:46 Uhr

Such mal bei Codeproject nach "DirectX.Capture". Da findest du ein Beispiel.

18.09.2006 - 14:42 Uhr

Stichwort: TypeConverter (genauer gesagt ExpandableObjectConverter).
Es gibt zum Thema PropertyGrid zwei sehr schöne Webcasts im MSDN (Webcast Finder -> Suche nach "Property-Grid"). Was du machen willst kommt im ersten vor.

14.09.2006 - 18:48 Uhr

Wenn deine Methode einen Rückgabewert hat, muss sie auch etwas zurückgeben und zwar auch jeder Code-"Pfad" (also jede Abzweigung, die dein Code durch if...else...else if, switch, usw. macht). Wenn du die genaue FEhlernummer (CSxxxx) in die MSDN-/SDK-Doku eingibst, sollte auch eine ausführliche Erklärung kommen.

12.09.2006 - 18:46 Uhr

Original von cronaldo17
Wenn ich ADO.NET benutze, muss ich mich dann viel in SQL hineinarbeiten, kann ich mit C# auch von Grund auf eine neue Datenbank machen, oder muss ich auf eine schon in z.B. Access gemachte zurückgreifen?

In SQL einarbeiten musst du dich nur wenn du auch eine SQL-DB verwendest (was ich dir auch raten würde). Und so schwer finde ich das gar nicht, vor allem solltest du die ganzen SQL-Anweisungen an einer Stelle haben, im sogenannten DAL (Data Access Layer, siehe auch "Drei-/n-schichtige Architektur", "n-Tier Architecture").
C# kann keine Datenbank erstellen (mit den Namen muss man manchmal ganz schön gut aufpassen!). Du kannst aber per C#-Code, .NET-Framework-Klassen( und SQL-Anweisungen) Datenbanken erstellen. Ich empfehle dir den Microsoft SQL Server 2005 (gibts auch kostenlos als Express Edition). Dazu gibts auch das SSMSEE (SQL Server Management Studio Express Edition).

12.09.2006 - 18:27 Uhr

Zu 2.: Du musst die <Form-Name>.<Sprachkürzel>.resx-Dateien zu deiner Form löschen (z.B. MainForm.de.resx oder MainForm.de-DE.resx). Diese DAteien werden nicht gelöscht, wenn du Localizable auf false stellst (das wär auch die Höhe!).

12.09.2006 - 18:16 Uhr

Das gleiche gilt übrigens auch für "seitenTyp".
Und noch 'ne Frage: Warum nimmst du als Typ von "seitenTyp" nicht gleich "Typ" (Anführungszeichen beachten!)?

11.09.2006 - 11:11 Uhr

Wenn eine Methode nicht virtual ist, brauchst du sie gar nicht versiegeln.

11.09.2006 - 09:54 Uhr

Du musst . ja nicht in den Filter dazufügen, du kannst es auch weg lassen. Und außerdem schützt kein einziger Mechanismus, man braucht immer eine Fehlerbehandlung: nicht überall, wo JPEG draufsteht (bzw .jpg hinten dran steht), ist auch JPEG drin! Du kannst jeder beliebigen Datei jede beliebige Endung geben, somit schützt dich die Prüfung auf die Endung gar nicht.

11.09.2006 - 09:48 Uhr

Von welcher Resourcen-Datei der String zurückgegeben wird, hängt von der eingestellten Kultur ab (siehe oben). Das ganze verläuft dann nach dem Fall-Back-Prinzip. Siehe MSDN-Doku:

The returned resource is localized for the culture determined by the current cultural settings of the current Thread (this is accomplished using the culture's CurrentUICulture property). If the resource has not been localized for that culture, the resource that is returned is localized for a best match (this is accomplished using the Parent property). Otherwise, a null reference (Nothing in Visual Basic) is returned.

If no usable set of resources has been found, the ResourceManager falls back on the neutral culture's resources, which are expected to be included in the main assembly. If an appropriate culture resource has not been found, a MissingManifestResourceException is thrown.

Wenn du NULL zurückbekommst, bedeutet das, dass du entweder nirgendwo einen String mit diesem Namen gespeichert hast oder dass der REsourceManager falscht instanziiert wurde.

11.09.2006 - 09:43 Uhr

Noch ein Tipp: Du kannst bei dem OpenFileDialog auswählen, welche Datei-Typen nur geöffnet werden dürfen! Dann nimmt dieser dir die Arbeit ab und dem Nutzer werden von vornherein nur diese Dateien angezeigt. Hier der Beispielcode aus der MSDN-Doku:

private void button1_Click(object sender, System.EventArgs e)
{
    Stream myStream;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();

    openFileDialog1.InitialDirectory = "c:\\" ;
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
    openFileDialog1.FilterIndex = 2 ;
    openFileDialog1.RestoreDirectory = true ;

    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        if((myStream = openFileDialog1.OpenFile())!= null)
        {
            // Insert code to read the stream here.
            myStream.Close();
        }
    }
}

EIn Beispiel-Pattern für Bilddateien aus der MSDN-Doku: "Image Files(.BMP;.JPG;.GIF)|.BMP;.JPG;.GIF|All files (.)|."
.

11.09.2006 - 09:37 Uhr

Eine Frage: Warum instanziierst du dir selbst einen ResourceManager, wenn du eine von VS erstellte Resources-Klasse hast?
Du müsstest eigentlich über "ChameleonConfig2.Properties.Resources.noXML" auf deinen String zugreifen können. Alternativ hast du in "ChameleonConfig2.Properties.Resources.ResourceManager" bereits einen vorhanden ResourceManager.

11.09.2006 - 09:34 Uhr

Probiers mal "händisch", dann kannst du das Format genau bestimmen, z.B.:

label1.Text = t.Minutes.ToString() + ":" + t.TotalSeconds.ToString();