Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von herbivore
Thema: Rekrusives Ordner kopieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo CinemaStrange,

ich denke was bitstream meinte ist folgendes:


string zw = Path.Combine(ziel, tmp);
statt


string zw = ziel + "\\" + tmp;
HTH

herbivore

Thema: Panel gedreht anzeigen
Am im Forum: GUI: Windows-Forms

Hallo CaptainIglo,

ein Bild kann man natürlich drehen - wobei ich dafür keinen Code parat habe - aber das Steuerelement, selbst nicht. Das heißt, das entweder das Bild an den Ecken abgeschnitten wird oder es so verkleinert wird, dass seine Ecken sichtbar bleiben, wodurch dann aber in den Ecken des Steuerelements leere Flächen bleiben.

HTH

herbivore

Thema: Rekrusives Ordner kopieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo bitstream,

Zitat
Die Boardsoftware schnippelt anscheinend Backslashes heraus!

das ist mir auch schon störend aufgefallen, aber zumindest kann man das Problem durch Verdoppelung der Backslashes umgehen.

herbivore

Thema: Panel gedreht anzeigen
Am im Forum: GUI: Windows-Forms

Hallo CaptainIglo,

das geht nicht.

herbivore

Thema: Stream ohne Datei
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo donmarten,

das kann viele Gründe haben. Hast du die Rückgabewerte geprüft? Falls die Rückgabewerte auf einen Fehler hindeuten, wäre es auch hilfreich zu wissen, was GetLastError (auch per DllImport zu bekommen) zurückliefert. Ansonsten poste mal bitte Deinen Code.

herbivore

Thema: Rekrusives Ordner kopieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo CinemaStrange,

nicht schlagen, wenn ich einen Link zu VB-Code poste. Aber es sieht so aus, als wäre es genau, was du brauchst:

Recursive File copy in VB.NET

HTH

herbivore

PS: In meiner Auflistung oben, habe ich vergessen, dass man die Zielverzeichnisse noch selbst anlegen muss (Directory.CreateDirectory).

Thema: Rekrusives Ordner kopieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo CinemaStrange,

bist du dir sicher, dass du das extra programmieren musst. Immerhin gibt es ja 'xcopy /s <quelle> <ziel>'.

Wenn du es wirklich in C# programmieren willst, musst du das vermutlich komplett ausprogrammieren. Mit Directory.GetFiles die Dateinamen holen, den Ziel-Pfad berechen, mit File.Copy die Dateien einzeln kopieren und mit Directory.GetDirectories rekursiv absteigen.

HTH

herbivore

Thema: Bild löschen (in use...)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo -acid-,

bei


Bitmap bitm = new Bitmap (Image.FromFile(MyPath));
bitm.Dispose ();
File.Delete (MyPath);

schlug bei mir das Löschen fehl, wogegen es bei


Image img = Image.FromFile(MyPath);
img.Dispose ();
File.Delete (MyPath);

funktionierte. Im ersten Fall erzeugst du ja ein Image- und ein Bitmap-Objekt und das Image-Objekt bleibt dann wohl trotz bitm.Dispose (); noch bestehen. Wenn du das Bitmap-Objekt trotzdem brauchst, dann müsstest du


Image img = Image.FromFile(MyPath);
Bitmap bitm = new Bitmap (img);
bitm.Dispose ();
img.Dispose ();
File.Delete (MyPath);

verwenden.

HTH

herbivore

PS: Es reicht sogar:


Image img = Image.FromFile(MyPath);
Bitmap bitm = new Bitmap (img);
img.Dispose ();
File.Delete (MyPath);

Thema: Bild löschen (in use...)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo -acid-,

ist es vielleicht das, was fehlt:

pictureBox1.Image = null;

oder vielleicht

pictureBox1.Invalidate ();
pictureBox1.Update ();

HTH

herbivore

Thema: Remoting
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Guggsdu,

Zitat
Wozu brauche ich die abstrakte Klasse. Muss sie abstrakt sein?

die abstrakte Klasse bildet das "Hauptprogramm" der Anwendung. Sie ist deshalb abstrakt, weil in .NET die Anwendung selbst nicht als Objekt, sondern über statische Methoden realisiert ist.
Zitat
Bedeutet das: ein Client kann nicht ein Event des Servers abonnieren, sondern der Server müsste direkt den Client ansprechen und ihm eine Nachricht senden (oder eine Fkt ausführen)?

Bevor ich die Frage beantworte, sollten wir erstmal die Begriffe Client und Server klären. Einerseits ist 'Server' im Sinne von die 'Server-Komponente' einer Anwendung, der Teil, der Dienste für die Client-Komponente der Anwendung erbringt. Also ein Webserver liefert die Daten, die der Browser angefordert hat. Analog ist beim .NET-Remoting der Server, der Teil, der das zu benutzende Objekt (hier ArgsReceviver) zur Verfügung stellt und der Client, der Teil, der Methoden des Objekts benutzt.

Um das zu Abonnent zu realisieren, das du willst, ist es vermutlich notwendig, das .NET-Remoting in beiden Richtungen zu verwenden. Also das sowohl die Server-Komponente also auch die Client-Komonente deiner Anwendung ein Remote-Objekt zur Verfügung stellen, dass dann die jeweils andere Komponente benutzen kann (Dazu muss man dann mindestens verschiedene Portnummern verwenden).

Die Client-Komponente würde dann über das Objekt der Server-Komponente das Abonnent bestellen und die Server-Komponente würde über das Objekt der Client-Komponente die auftretenden abonnierten Events an die Client-Komponente schicken.

Man braucht beide Richtungen, da bei einer Client-Server-Kommunikation der Client immer der aktive/auslösende und der Server immer der passive/reagierende Teil ist. Das Bestellen des Abonnements löst jedoch die Client-Komponente aus und die Server-Komponente reagiert, wogegen beim Eintreten eines Ereignisses die Server-Komopnente die zugehörige Nachricht auslöst und die Client-Komponente darauf reagiert.

HTH

herbivore

Thema: DropDown Button einer Combobox farbig?
Am im Forum: GUI: Windows-Forms

Hallo Marcel,

stimmt, ComboBoxen sind da etwas störrisch. Mir fällt da auch keine anderer Ansatz ein, als die ComboBox selbst zu zeichnen, Stichworte: ComboBox.DrawMode und DrawMode.OwnerDrawFixed. Aber ich bin mir noch nicht mal sicher, ob man dann nicht nur die ausgeklappten Einträge zeichnen kann.

HTH

herbivore

Thema: Module
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

ich kann den Modul-Begriff auch nicht vollständig erhellen, aber zumindest mal die "offizielle" Definition liefern:

Zitat
Eine Einheit, die geladen werden und Typdeklarationen sowie Typimplementierungen enthalten kann. Ein Modul enthält genügend Informationen, um der Common Language Runtime das Auffinden aller Implementierungsbits zu ermöglichen, wenn das Modul geladen wird. Das Format für Module ist eine Erweiterung des PE-Dateiformats (Portable Executable) von Windows. Bei der Weitergabe ist ein Modul immer in einer Assembly enthalten.

HTH

herbivore

Thema: idle time UI
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo quickie,

ich denke die Nicht-Idle-Erkennung lässt sich schon weitestgehend zentralisieren, z.B. könntest du alle Forms von einer eigenen Klasse NonIdleForm ableiten, die eine Methode InitNonIdle anbietet, die bei allen enthaltenen Controls

foreach (Control ctrl in Controls)

einen Click-EventHandler hinzufügt

ctrl.Click += new EventHandler (NonIdleClick);

In diesem NonIdleClick setzt die NonIdleForm-Klasse dann deinen Zähler hoch oder was auch sonst zu tun ist. Ähnliches kann man für Tastatur-Ereignisse machen. Man muss dann nur noch NonIdleForm nach dem Erzeugen aller Controls im Kontruktor der Unterklassen aufrufen.

Evtl. wäre es aber auch eine Alternative globale Hooks zu Erkennung zu verwenden. Die Forumsuche nach Hook sollte da was Brauchbares zu Tage fördern.

HTH

herbivore

Thema: Remoting
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Guggsdu,

meine Programm in "Dateiassoziation" sollte schonmal eine gute Grundlage sein, für das was du willst. Das Programm enthält momentan sowohl den Client- als auch den Server-Teil; das müsstest du noch aufteilen. Aber ansonsten ist es wohl was zu willst: Die Client-Instanz schickt per Remoting eine Nachicht an die Server-Instanz.

HTH

herbivore

Thema: Graphicsobjekt verschwindet bei Fensterwechsel
Am im Forum: GUI: Windows-Forms

Hallo Fragender,

Zitat
Kannst Du mir eventuell einen kleinen Quellcode schicken bzw. das ganze noch ein bisschen genauer erklären?
Dann entscheide ich mich mal für den Quellcode :-)


using System;
using System.IO;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Imaging;

//*****************************************************************************
public class Canvas : Form
{
   //--------------------------------------------------------------------------
   private Bitmap     bitmCanvas;
   private Graphics   graphCanvas;
   private PictureBox picbCanvas;

   const int iWidth      = 600;
   const int iHeight     = 480;

   //==========================================================================
   public Canvas ()
   {
      Control ctrlCurr;

      Text = "PictureBox";
      Size = new Size (iWidth + Size.Width - ClientSize.Width,
                       iHeight + Size.Height - ClientSize.Height);

      //-----------------------------------------------------------------------
      bitmCanvas = new Bitmap (iWidth, iHeight, PixelFormat.Format24bppRgb);

      //-----------------------------------------------------------------------
      SolidBrush sb = new SolidBrush (Color.LightBlue);

      graphCanvas = Graphics.FromImage (bitmCanvas);
      graphCanvas.FillRectangle (sb, 0, 0, iWidth, iHeight);

      //-----------------------------------------------------------------------
      ctrlCurr = picbCanvas = new PictureBox ();
      ctrlCurr.Location = new Point (0, 0);
      ctrlCurr.Size = new Size (iWidth, iHeight);
      ((PictureBox)ctrlCurr).Image = bitmCanvas;
      ctrlCurr.MouseDown += new MouseEventHandler (CanvasMouseDown);
      Controls.Add (ctrlCurr);
   }

   //==========================================================================
   protected void CanvasMouseDown (Object sender, MouseEventArgs me)
   {
      SolidBrush sb = new SolidBrush (Color.Red);
      graphCanvas.FillRectangle (sb, me.X-1, me.Y-1, 3, 3);
      picbCanvas.Invalidate (); // der Einfachheit wegen alles invalid setzen
      picbCanvas.Update ();
   }
}

//*****************************************************************************
abstract class App
{
   public static void Main (string [] astrArg)
   {
      Application.Run (new Canvas ());
   }
}

HTH

herbivore

Thema: Bild zerlegen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Capi,

guck mal in

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp11152001.asp

im Abschnitt 'Accessing the Bitmap Data Directly'.

HTH

herbivore

Thema: DataBinding Formatierung von Zahlen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Toddi,

mit Float.ToString () und dem entprechenden Format, das zu haben willst, als Parameter also für zwei Nachkommastellen Stellen z.B. ToString ("f2").

HTH

herbivore

Thema: TextBox in DateTime konvertieren
Am im Forum: GUI: Windows-Forms

Hallo der_Brain,

das mit DateTime und TimeSpan ergibt sich eigentlich ganz logisch. Wenn man zwei DateTime (also zwei Zeitpunkte) von einander abzieht, dann erhält man eine TimeSpan (also eine Zeitspanne). Was du willst ist aber von einem Zeitpunkt eine Zeitspanne abzuziehen, was dann im Ergebnis eine Zeitspanne ergibt oder aber du meinst zwei Zeitspannen, die voneinander abgezogen werden und wieder eine Zeitspanne ergeben.


dt1 = dt1 - ts2;
ts1 = ts1 - ts2;

HTH

herbivore

Thema: nochmal eine Stringsuche
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Burnswigg,

du musst die Abfrage wie folgt ändern:


if (result<0)

Da 'hetz' am Anfang steht, ist der zurückgelieferte Index 0. Wenn der Strings nicht gefunden würde, würde dagegen -1 zurückgegeben.

HTH

herbivore

Thema: Graphicsobjekt verschwindet bei Fensterwechsel
Am im Forum: GUI: Windows-Forms

Hallo Fragender,

das mit dem Paint-Event ist gar nicht nötig. Meines Erachtens richt das nach folgendem:

Bitmap erzeugen (new), mit Graphics.FromImage ein zugehöriges Grahpics-Objekt erzeugen, damit in die Bitmap reinmalen wie gehabt und zum Schluß eine PixtureBox erzeugen (new) und die Bitmap der PictureBox.Image-Eigenschaft zuweisen.

Die PictureBox übernimmt dann alle Aktualisierungs aus den von die genannten Gründen. Nur wenn du später selber was neues in die Bitmap malst, ist ein Picture.Invalidate gefolgt von einem PictureBox.Update nötig.

HTH

herbivore

Thema: Stream ohne Datei
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo donmarten,

die Forumssuche hilft. Der nötige DllImport-Code steht hier:

USB ansteuern

HTH

herbivore

Thema: aktuelle Bildschirmauflösung ermitteln
Am im Forum: GUI: Windows-Forms

Hallo Marcel,

uhiii, gleich der glücklichste Mensch der Welt. Na dann:


WindowState = FormWindowState.Maximized;

herbivore

Thema: String formatieren. Methode PadRight()
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo boco25,

Zitat
ich benutzte Courier als Schriftart

bitte untertänigst zu verzeihen, wenn ich diese Aussage in Zweifel ziehe. Da das Auffüllen korrekt läuft - wie unabhängig von mir nitronic festgestellt hat - würde bei Verwendung von Courier die Ausgabe bündig erfolgen.

herbivore

Thema: String formatieren. Methode PadRight()
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo boco25,

das Auffüllen an sich läuft schon richtig, aber mit einem proportionalen Font, wie er normalerweise in MessageBoxen verwendet wird, führt das Einrücken von Text durch Leerzeichen (fast) immer zu Kraut und Rüben.

HTH

herbivore

PS: In proportionalen Fonts sind die einzelnen Zeichen unterschiedlich breit.

Thema: TextBox in DateTime konvertieren
Am im Forum: GUI: Windows-Forms

Hallo der_Brain

wenn countdown vom Typ DateTime ist, statt von string, sollte es gehen.

HTH

herbivore

Thema: aktuelle Bildschirmauflösung ermitteln
Am im Forum: GUI: Windows-Forms

Hallo Marcel,

Zitat
ich würde gerne die aktuelle Bildschirmauflösung ermitteln damit sich mein Programm automatisch auf Vollbild einstellen kann.
Statt das zu tun, könntest du das Fenster einfach maximieren.

BTW: Ich hasse Anwendungen, die meinen besser als ich zu wissen, wie groß das Fenster sein muss. Am liebsten sind mir Anwendungen, die in der Größe starten, in der ich sie das letzte Mal verlassen haben.
Zitat
Oder gibt es auch eine Möglichkeit die AUflösung des Benutzers durch das Programm zu manipulieren?
Schon mal ein Ja, auch wenn ich gerade keinen Code oder Beispiel parat habe.

BTW: Das sollte man ohnehin nur in Ausnahmefällen, z.B. bei Fullscreen-Spielen, machen. Insbesondere bei TFT-Displays gibt es ja eine optimale Bildschirmauflösung, die die meisten Benutzer absichtlich eingestellt haben. (Und auch ohne TFT nutze ich gerade meine Lieblingsauflösung 1600x1200).
Zitat
PS: Was ist sinnvoller?
1. Programm auf Auflösung anpassen oder
2. Auflösung an Programm anpassen?
Um das zu beantworten, sind weitere Informationen über das entsprechende Programm und seinen Einsatzzweck erforderlich.

HTH

herbivore

Thema: Byte-Array in Datei speichern(encoding)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Maddinel,

das sollte schon so gehen, wie du das machst. Sprich, die Bytes aus deinem Array sollte so wie sie im Array stehen auch in der Datei landen. Bist du dir sicher, dass die Daten korrekt empfangen wurden? Oder die Daten kommen als z.B. als Folge von 4-Byte-Integer-Werten an. Dann müsstest du die Intergers erst einzeln in Strings umwandeln und die Kommata selbst einfügen.

HTH

herbivore

Thema: Image proportionen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Massaka,

Zitat
Die Bilder müssen nicht quadratisch sein. Die Angaben 90x90 sind kein Zwang. Das einzige ist, das sie diese Abmasse nicht überschreiten dürfen. Im Prinzip wäre ein 73x58 auch ok.

das ist doch genau, was mein Code macht (zumindest machen soll). Wenn ein Originalbild z.B. die Maße 1720x1980 hat, dann geht das Programm in den else-Teil und berechnet:


iWidth = 90 * 1720 / 1980;  // ergibt 78
iHeight = 90;

also bekommt der Thumbnail die Maße 78x90, d.h. eine Reduzierung der Größe unter Beibehaltung des Seitenverhältnisses (abgesehen von minimalen Rundungsfehlern).

Oder meinst du noch eine andere Art der Verzerrung?

herbivore

Thema: Interface, Klassen und Vererbung ?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo VizOne,

das klingt so, als ob du mir widersprichst, dabei sagst du genau, was ich gesagt habe:

Zitat
herbivore: da man mit Mehrfachvererbung (im Zusammengang mit abstrakten Klassen) alles kann, was man mit Interfaces kann, braucht man Interfaces [als Sprachmittel] nur, wenn man keine Mehrfachvererbung hat.

C++ hat eben Mehrfachvererbung und braucht gerade deshalb keine Interfaces (als Sprachmittel).
Zitat
VizOne: Dass in Sprachen wie C# und Java interfaces so bestehen, wie sie bestehen, ist wohl darauf zurückzuführen, dass die Designer eine deutliche Trennung zwischen Implementationen und Interfaces haben wollten.

Wenn es nur um die Trennung an sich ginge, wäre m.E. nicht (ausreichend) zu erklären, warum es zwar mehrfache Interface-Vererbung gibt, aber nur einfache Implementierungsvererbung.

Ich denke daher nicht, dass diese Trennung das primäre Ziel war, sondern vielmehr, dass das Ziel war, den Teil der Mehrfachvererbung zu retten, der keine Schwierigkeiten macht (Interface-Vererbung) und auf den Teil der Mehrfachvererbung zu verzichten, der Probleme macht (Implementierungsvererbung) und man zur Erreichung dieses Ziels die Trennung eingeführt hat (zumindest bei Java und C#).

Gruß

herbivore

Thema: Image proportionen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Massaka

spricht etwas gegen folgendes?


if (MyImage.Width > MyImage.Height) {
   iWidth = 90;
   iHeight = 90 * MyImage.Height / MyImage.Width;
} else {
   iWidth = 90 * MyImage.Width / MyImage.Height;
   iHeight = 90;
}
... MyImage.GetThumbnailImage(iWidth, iHeight, myCallback, System.IntPtr.Zero); ...

HTH

herbivore