Laden...
N
NovemberRain myCSharp.de - Member
Softwareentwickler Dabei seit 27.11.2006 98 Beiträge
Benutzerbeschreibung

Forenbeiträge von NovemberRain Ingesamt 98 Beiträge

28.08.2009 - 11:22 Uhr

verwendetes Datenbanksystem: MS SQL Server 2008

Hi,

Ich bin momentan damit konfrontiert das meine Datenmengen immer umfangreicher werden und der Benutzer bei jedem Lesevorgang eines Datasets erstmal vor einem blockierten GUI steht. Um dies zu verhindern würde ich gerne ein Dataset in einem neuen Thread füllen und solange einen "Bitte warten" Dialog für den Benutzer einblenden und nach Beendigung des Einlesevorgangs soll der Thread per Invoke das DataSet(oder besser die entsprechende DataTable) an den GUI Thread zurückgeben.

Nun meine Frage, ist dieser Ansatz sinnvoll oder gäbe es andere Möglichkeiten die besser geeignet wären? Da es sich bei den Einlesevorgängen um Übersichtstabellen handelt kann ich leider die darzustellende Datenmenge nicht weiter einschränken.

11.08.2009 - 11:54 Uhr

Also ich hab jetzt mal alle deine Ratschläge abgearbeitet aber leider hatte keiner geholfen. Unter "Verweise" sind auch explizit die neuen DLLs angegeben.

Komischerweise scheint das nur für bestimmte Forms zu gelten, obwohl alle auf das Toolkit zugreifen. Also ich kann das Mainwindow und die Belegübersicht öffnen aber sobald ich einen Beleg öffne verlangt er nach der DLL. Obwohl alle 3 Forms mit dem Krypton Toolkit arbeiten.

11.08.2009 - 08:57 Uhr

Hallo,

Ich verwende für meine Applikation das Toolkit und den Navigator von Component Factory. Habe nun vor kurzem von der Version 3.0.8 auf 3.5.2 gewechselt was auch alles relativ problemlos ging. Nur scheinen manche Formen meiner Anwendung noch auf die alte Version zu referenzieren. So passiert es immer wieder das bestimmte Dialoge mit einer Exception nach der Version 3.0.8 schreien, andere wiederum aber ganz normal mit der neuen Version arbeiten. Leider stellt Component Factory keinen Patcher bereit, kann ich die Verweise per Hand anpassen?

04.08.2009 - 14:42 Uhr

Hallo,

ich verwende zum Drucken meiner Rechnungen CrystalReports welches von Visual Studio 2008 mitgeliefert wird. Der Report bekommt seine Rechnungsdaten aus einem Dataset. Sofern man nur einseitige Rechnungen drucken will funktioniert es schon ganz gut. Bei mehrseitigen Rechnungen dagegen müsste der Pageheader von der ersten Seite sich vom Header der folgenden Seiten unterscheiden, nur wie realisiere ich das?

Momentan habe ich den Seitenkopf multifunktional gestaltet so das auf ihm alle nötigen Informationen zum Beleg abgebildet werden, das ist zwar zweckmäßig aber nicht schön und sieht auch nicht nach einer professionellen Rechnung aus.

04.02.2009 - 09:19 Uhr

Hi,

Danke für deine Antwort. Im Grunde genommen wäre der DataView genau das Element das ich benötige. Aber für die unterschiedlichen Controls fülle ich, aus Gründen der Performance, das Dataset mit den spezifischen Daten(über angepasste SQL Statements). Da der Nutzer mit mehreren unterschiedlichen Belegtypen zeitgleich arbeiten kann aber nicht muss wär es natürlich schlecht wenn das Programm alle Datenstäze auslesen muss statt der speziell für diese Abfrage gekennzeichneten.

03.02.2009 - 14:34 Uhr

verwendetes Datenbanksystem: <SQL Server 2005>

Hallo,

Ich benötige für mein Projekt oftmals gefilterte Ansichten bestimmter Tabellen. Zum Beispiel wird in der Tabelle jegliche Art von Beleg gespeichert, in der Übersicht "Rechnungen" sollen natürlich nur jene Belege angezeigt werden welche die entsprechende Kennzeichnung haben. Momentan verwende ich für die ein Dataset welches die Datenbindung ermöglicht. Wenn ich nun eine Übersicht der Gutscheine im System erstellen will könnte ich die gleiche Tabelle im Dataset wiederverwenden nur die SQL Methode zum Füllen müsste den geänderten Typ berücktsichtigen.

An sich ist das eine tolle Sache, nur was ist wenn ich mit beiden Ansichten gleichzeitig Arbeiten möchte? Ist es da nötig für jede Belegart eine eigene Tabelle im Dataset zu erstellen oder gibt es die möglichkeit die Datasets für die Steuerelemente zu Klonen damit das Grundgerüst immer das selbe ist aber die gespeicherten Informationen für jedes Element eigens hinterlegt werden.

20.11.2008 - 08:25 Uhr

Hallo Forenkollegen,

Ich bin schon seit längeren auf der Suche nach einem leicht verständlichen Buch das sich mit ADO.Net der Frameworks 3.0 oder noch lieber 3.5. Leider treffe ich nur auf Empfehlungen für Bücher die sich mit dem Framework 2.x beschäftigen. Hat da jemand eine Empfehlung für mich parat?

18.11.2008 - 08:30 Uhr

Na das erklärt natürlich einiges. Hab nämlich auch sehnsüchtig auf das Buch gewartet da ich sehr gut mit dem OpenBook klar gekommen bin. Gibts da noch mehr Alternativen. Vorzugsweise in Deutsch, wobei Englisch auch akzeptabel wäre.

24.06.2008 - 15:20 Uhr

Okay, danke für die Erklärung. 🙂

24.06.2008 - 15:06 Uhr

Wo liegt der Unterschied? Sobald ich die Datei(DLL oder EXE) mit der Assemblyversion kompiliere wird diese doch unter dieser Versionsnummer angesprochen. 🤔

23.06.2008 - 15:53 Uhr

Das Einstellen der Versionsnummer geht übrigens in den Optionen des aktuellen Projektes. Eine richtige Verwaltung die auch den Stand bei Codeänderungen absichert hat VS meines Wissens nach nicht.

19.06.2008 - 07:50 Uhr

Das selbe Problem hatte ich vor nicht allzu langer Zeit selbst zu lösen. Man kommt schon nach kurzer Suche zu dem Schluss das ein sicherer Softwareschutz nicht gewährleistet werden kann und je komplexer und "sicherer" man die Software macht desto unbequemer wird es für den ehrlichen Käufer. Eine Software cracken ist doch vielmals einfacher als eine Software zu aktivieren(mit gültigen Key versteht sich).

Ein einfacher Schutz der Software sollte dennoch gegeben sein, die Leute sollen schon daran erinnert werden das sie die Software kaufen sollten.

18.06.2008 - 13:20 Uhr

Hi,

ich suche nach einer Möglichkeit die Settings Projektübergreifend in meiner Solution zu verwalten. Dies soll dann alles von dem Projekt 'Options' aus geschehen.

Da Setting Files aber immer internal sind könnten sie außerhalb des Projektes nicht erreicht werden. Das könnte ich jetzt umgehen in dem ich die internal Deklaration gegen eine public Deklaration tausche aber dann wären alle meine Settings änderbar. Bietet VS da eine Möglichkeit die Settings auch zentral in einer Solution zu verwalten?

16.06.2008 - 07:32 Uhr

Seit der Umstellung auf die Intel CPUs sind für mich MACs nur noch überteuerte PCs mit einem alternativen Betriebssystem. Leider muss man sagen, früher fand ich die Geräte durchaus reizvoll.

10.06.2008 - 14:01 Uhr

Ich weiss ja nicht ob das für dich eine Option wäre aber ich habe das Umschalten der Ansichten in ein Contextmenü gepackt das ich dem Listview zugewiesen habe. So machts der Windows Explorer ja auch.

10.06.2008 - 13:57 Uhr

Ich muss mich entschuldigen aber ich habe immer noch keine Lösung gefunden und befürchte da meine letzte Änderung des vorhergehenden Beitrages leider zu spät war damit er beachtet wurde.

Ich habe langsam das Gefühl das ich beim Zeichnen darauf achten muss ob das Item sichtbar ist, je mehr Items im Listview sind desto langsamer geht das Zeichnen von statten.

10.06.2008 - 07:09 Uhr

Khalid

Zitat:
warum du 2 if schleifen machst

Siehe hier){gray}
extrem konstruktiv... danke. Hat dem Fragesteller jetzt sehr viel gebracht 😁

Ich denke damit wollte er eher dir n Stubs in die richtige Richtung geben, denke nicht das es böse gemeint war. 🙂

04.06.2008 - 14:20 Uhr

Viel mehr abgeänderten Code gibt es zu dem Listview nicht, er wird mit einem Thread befüllt aber das Zeichnen an sich geht in gewohnter Geschwindigkeit, nur sobald sich etwas im Listview ändert(Scrollen oder Markieren) scheint er in die Knie zu gehen.

Ich lass alle Objekte anfangs mal per extra Thread einfügen. Aber das sollte ja nichts ausmachen.

Edit: Kann es sein das ich selbst prüfen muss ob das zu zeichnende Objekt sich im Sichtbereich des Listviews liegt oder macht das Windows selbst? Sobald ich anfange etwas selbst zu Zeichnen gehts in die Knie. Nutze ich dagegen die Methoden fürs Zeichnen des Standarteintrages oder des Standarttextes auf dann läuft alles normal und ohne rucken.

04.06.2008 - 07:41 Uhr

So ich habe mal test weise die einzelnen Codestellen, soweit es möglich war, de- und wieder aktiviert aber auch wenn ich nur den Text darstellen lasse habe ich dieses träge Verhalten. Gerade beim scrollen, ungefähr so wie wenn man noch keinen Grafikkartentreiber installiert hat und im Windowsexplorer scrollt.

03.06.2008 - 14:14 Uhr

Ja, das ist mein abgeleiteter Listview der Doublebuffered auf true stehen hat.

Danke für den Tipp mit dem Using aber leider hat es keine großen Performancegewinne gebracht, bin immer noch ratlos was das Problem angeht.

03.06.2008 - 07:44 Uhr

Hallo,

ich muss mich jetzt leider nochmal an euch wenden da ich keine Lösung für meine Performanceprobleme finde. Und zwar reagiert der Listview beim Selbstzeichnen der Elemente bedeutend träger als beim Standartzeichenvorgang.(z.B. geht das Scrollen nur sehr langsam von Statten, ebenso ist eine deutlich spürbare Verzögerung zwischen einem Klick und bis zum gewünschten Ereignis vorhanden) Meine Items enthalten aber lediglich ein Bild aus der Largeimagelist sowie einen Text und je nach Status einen Auswahlrahmen. Irgendwo muss ich einen Denkfehler haben.

Mein Code:



        private void listView1_DrawItem (object sender, DrawListViewItemEventArgs e)
        {
            try
            {                
                
                // Draw the item text for views other than the Details view.
                if (lstvw_OverView.View == System.Windows.Forms.View.LargeIcon)
                {

                    Graphics g = e.Graphics;

                    //g.SmoothingMode = SmoothingMode.AntiAlias;

                    // Punkt für das Zeichnen des Bildes ermitteln(Damit das Bild zentriert im Item steht)
                    System.Drawing.Point _Image_Location = new System.Drawing.Point(e.Bounds.Location.X + lstvw_OverView.LargeImageList.Images[e.Item.Index].Size.Width / 4, e.Bounds.Location.Y);

                    // Zeichne das Bild
                    e.Graphics.DrawImage (lstvw_OverView.LargeImageList.Images[e.Item.Index], _Image_Location);

                    // Sofern das Item Selektiert ist soll ein Auswahlrahmen gezeichnet werden
                    if ((e.State & ListViewItemStates.Selected) != 0)
                    {
                        // Draw the background and focus rectangle for a selected item.
                        //g.FillRectangle(Brushes.Maroon, e.Bounds);
                        //e.DrawFocusRectangle();
                        Rectangle _Bounds = new Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width - 1, e.Bounds.Height - 1);
                        e.Graphics.DrawRectangle (new Pen(System.Drawing.Color.Blue), _Bounds);

                        // Farbe des Hindergrundes und der Textfarbe(ForeColor) auswählen
                        //e.Item.BackColor = System.Drawing.Color.Gray;
                        //e.Item.ForeColor = System.Drawing.Color.Blue;


                    }
                    else
                    {
                        // Code für nicht selektierte Einheiten
                    }


                    toolStripStatusLabel.Text = "DEBUG: X " + lstvw_OverView.LargeImageList.Images[e.Item.Index].Width;
                    
                    // Punkt für das Erstellen des Textes definieren
                    _Image_Location = new System.Drawing.Point(_Image_Location.X, _Image_Location.Y + 125);

                    // Farbe des Textes definieren
                    Brush _ColorOfText = Brushes.Black;
                    //e.DrawText();

                    // Text zeichnen
                    e.Graphics.DrawString (e.Item.Text, SystemFonts.DefaultFont, _ColorOfText, _Image_Location);


                }
                else
                    e.DrawDefault = true;

            }
            catch (Exception ex)
            {
                if (_Debug)
                    LogFile.LogFile_Current_Instance.WriteToLog(ex.ToString());
            }

        }


30.05.2008 - 13:24 Uhr

Das bedeutet das ich jedesmal den Inhalt des Items neuzeichnen lassen muss? Ich hab mir mal einen Zähler in die Methode gebaut die mitzählt wenn wie oft sie aufgerufen wird, der schnellt bei 10 Items dann beim ersten Zeichnen schon auf 22 und steigt beim Markieren auch gern mal um 10 - 20 Aufrufe. Ist da was faul oder mach ich mir unnötig Gedanken? Das Flackern konnte ich durch einen abgeleiteten Listview mit aktiviertem Doublebuffer verhindern.

Edit: Meine Items enthalten neben normalen Text auch eine Grafik, ich bin mir jetzt nicht sicher ob die jedesmal neu gezeichnet werden sollte oder ob es da performantere Lösungsansätze gibt.

Die Methode DrawDefault hab ich mir bereits angesehen aber die zeichnet nur den Standartlistvieweintrag den ich ja durch das eigene Zeichnen austauschen will.

30.05.2008 - 07:26 Uhr

Dazu hab ich jetzt aber noch eine Frage, und zwar wie das beim Erhalten des aktuellen(unveränderten) Zustandes eines Items aussieht. Wenn man bei jedem Aufruf der Zeichenroutine für ein ListViewItem das Item neu zeichnen lässt dann wird das ganze sehr langsam und flackert stark. Ich müsste mir also den Zustand des Bereiches merken um diesen dann bei unverändertem Inhalt wiederverwenden zu können oder bin ich da auf dem Holzweg?

Also momentan lasse ich beim Laden alle Items einmal zeichnen, danach wird pro Item eine Flag gesetzt die ein neuzeichnen nur noch bei verändertem Status zulässt. Also sieht mein Programm eine Neuzeichnung nur vor wenn das Item aktiv wird(Um den Auswahlrahmen herzustellen) oder zuletzt aktiv war(Um den Auswahlrahmen wieder zu entfernen).

29.05.2008 - 07:43 Uhr

Danke schonmal für die Antwort herbivore.

Ich habe mich jetzt mal damit etwas beschäftigt und auch schon einige Erfahrung mit dem Zeichnen der Listviewelemente gemacht. Nur leider fehlt mir da noch einiges an Basiswissen, kennt jemand ein Tutorial das sich mit den einzelnen Methoden und Möglichkeiten des Zeichnens in Controls auseinandersetzt?

29.05.2008 - 07:15 Uhr

Hi Simon,

arbeite dich einfach mal in die von herbivore geposteten Threads ein. Hatte bis vor kurzem auch keine große Ahnung von Threads aber inzwischen lasse ich meinen großen Listview immer nur Stückweise füllen und erreiche so eine viel angenehmere Arbeitsweise mit dem Programm.

21.05.2008 - 07:08 Uhr

Hi,

ich benutze zum Anzeigen diverser Artikel einen Listview und benutze dort die Ansichten große Icons/kleine Icons und Details. Neben einigen anderen Listviewtypischen Problemen wie der im System verankerte Abstand zwischen den Bildern/Icons hab ich noch ein spezielles Problem das ich aber lösen sollte.

Und zwar muss ich verhindern das der Listview die Bilder/Icons der Elemente(Text soll weiterhin markiert bleiben) markiert, so wie ich das gesehen habe gibt es dafür keine Eigenschaft und so denke ich das ich das wohl selbst Anpassen muss. Wie gehe ich sowas am Besten an?

05.05.2008 - 11:59 Uhr

Ich nutze für sowas den Ant_Renamer, der kennt viele unterschiedliche Funktionen, unter anderem auch Iteration. Hat mir schon viel Arbeit gespart 🙂

Ist übrigens Freeware
Edit: Link zum Download

04.04.2008 - 09:02 Uhr

Hallo,

ich hoffe mein Thema ist nicht zu OffTopic für dieses Forum. Und zwar bin ich auf der Suche nach einen performanten Datenmanagementtool für SQLite(V3.5) Datenbanken. Wenn man danach sucht findet man zwar dutzende Programme aber viele haben schon Probleme wenn die Datenbanken an die 1 MB Grenze kommen und meine Anwendung befindet sich gerade noch im Anfangsstadium. Das Auslesen im Code meiner Anwendung funkioniert dagegen äußerst flott, da bereue ich die Wahl von SQLite auf keinem Fall.

Das Problem scheint eher zu sein wie man die Daten einigermaßen komfortabel in die DB bringt. Wichtig wär für mich nur das Importieren aus CSV Dateien. Die Programme die ich bisher getestet habe wurden während des Arbeitens mit der Datenbank immer langsamer und verursachten auch irgendwann Fehler(z.B. SQLite Administrator oder SQLite Database Browser) die einen Neustart des Programmes nötig machten was auf Dauer sehr nervig sein kann. Sollte es im Freeware/OpenSourcebereich nichts sinnvolles geben wär ich auch für kostenpflichtige Alternativen offen.

03.04.2008 - 10:08 Uhr

Da der Ordner sowohl in der englischen als auch in der deutschen Windowsversion Default User heisst würd ich einfach den Ordner "Dokumente und Einstellungen" raussuchen und dem Pfad "\Default User" hinzufügen.

03.04.2008 - 07:46 Uhr

Ich werf die Exceptions jetzt von unten nach oben hoch und prüfe ob bereits ein Fehler vorgefallen ist.

Zum besseren Verständnis: Das Plugin besteht aus einer Auswahlform und diese sollte bei einem schweren Fehler mit entsprechender Fehlermeldung geschlossen werden.

02.04.2008 - 15:43 Uhr

Du willst quasi einen neutralen Platzhalter an erster Stelle der Combobox die bei einer Abfrage auch ignoriert wird?

02.04.2008 - 15:27 Uhr

Mal Comboboxfeld.SelectedIndex = -1 probiert?

02.04.2008 - 15:23 Uhr

Übergib doch einfach ein Stringarray? Dafür hat List<T> die Methode toArray(), damit verschieb ich auch immer Arrays die ich in einer Liste gesammelt hab.

02.04.2008 - 09:23 Uhr

Hi

Ich entwickle ein Plugin das beim Laden auf 2 Datenbanken zugreift. Da die gewonnen Daten zum sauberen Programmablauf unbedingt erforderlich sind soll bei entsprechenden Exceptions das Plugin, nach einer Fehlermeldung mit Fehlercode, auch geschlossen werden. Nur scheint es im Catchbereich nicht Möglich zu sein die aktuelle Form zu schließen. Sofern ich ein finally verwenden würde wär das ja auch ganz logisch nur so behindert mich das mehr als es mir hilft, aber ich denk ich halte da im Moment an einem falschen Ansatz fest. Wie löst ihr das Problem mit schwerwiegenden Fehlern die eure Programme zum Beenden zwingen?

01.04.2008 - 11:56 Uhr

Komisches Phänomen, hatte vor meinen 22" Dell noch einen Samsung 19"(5:4) mit meinen HP 2408(16:10) an einer GF 8800 GTS(G92) und nie Probleme mit den Seitenverhältnissen oder den dargestellten Inhalten. Dem PC wirds ja relativ egal sein ob jetzt ein Monitor oder ein Fernseher am DVI hängt.

Aber wenn du spielst oder Filme schaust brauchst dne LCD eh net, hilfts was wenn du den für die Zeit deaktivierst? Aber ist sicherlich nervig wenn du dann ständig hin und herschalten musst im Nvidia Panel 😠

01.04.2008 - 11:37 Uhr

Es gibt ein paar kostenlose Programme die das Verwalten der Datenbank ermöglichen sofern du es nicht direkt in der IDE machen willst, darunter gibts auch Programme die komplette CSV Dateien als Tabellen importieren können.

SQL Database Browser wär da ein Kandidat.

01.04.2008 - 07:40 Uhr

Hallo,

Deine Grafikkarte unterstützt im Prinzip jede mögliche Auflösung bis 2560 * 1600, es werden der einfachheitshalber meißt nur die häufigst genutzten Angegeben. Wenn dein LCD die FullHD Auflösung unterstützt dann sollte er sie über HDMI auch wiedergeben, was an HDMI hängt kann dem Monitor ja relativ egal sein. Achte aber darauf den Fernseher mit seiner nativen Auflösung zu füttern, also bei Full HD 1920* 1080. Bei HD Ready entsprechend die niedrigere Auflösung, selbst wenn er einen 1080p fähigen Anschluss hat, das heißt nur das er das Signal für sein Panel wieder runterrechnen muss, das bedeuted Qualitätseinbußen und mehr Pixel hat man dann leider auch nicht.

31.03.2008 - 11:28 Uhr

Kopier die Dateien mit nem extra Thread und lass das Infofenster(eigen Form?) per Invoke die entsprechenden Steuerelemente(Statusbalken/Label) aktuallisieren.

31.03.2008 - 08:57 Uhr

SQL Lite klingt gar nicht schlecht.

Allerdings finde ich kaum tutorials. Kennt ihr eine gute Seite?
Wie bekomme ich solch eine DB zum Laufen?

Ich arbeite jetzt schon seit längeren mit SQLite und muss sagen es ist ideal wenn man nicht auf Datentypen angewiesen ist. So ist es eine Eigenschaft von SQLite das Werte intern alle als Strings gespeichert werden*. Sofern man die Datenbank aber nur als Datenspeicher verwendet sollte das relativ egal sein, die Performance stimmt und dürfte bei deinem Anwendungsbereich eh eher nebensächlich sein.

Alles was du für SQLite benötigst findest du hier.

*Ich glaube in den neueren Versionen sind bereits erste Ansätze von unterschiedlichen Datentypen enthalten, vielleicht kann da jemand anders mehr dazu sagen.

31.03.2008 - 08:23 Uhr

Hi inek,

setzt du die Tooltips über die Eigenschaften der Controls oder über ein Tooltipobjekt? Wenn du ersteres verwendest dann probiere mal das Tooltipobjekt. Das kannst du dann mit SetToolTip einem Steuerelement zuweisen.

28.03.2008 - 11:54 Uhr

Nimm doch lieber gleich eine Datenbank und löse das ganze über SQL Abfragen. Das ist bedeutend schneller als immer alle Werte sequentiell durchzustottern. Gibt ja auch Embbedded Datenbanken die man nicht installieren muss wie SQLite.

28.03.2008 - 08:12 Uhr

Wenn man nicht unbedingt den schnellsten Rechner im Büro stehen hat merkt man doch auch bei relativ einfachen Auswahlforms mit 15 - 20 Steuerelementen eine gute Verzögerung bis der Designer reagiert. Dennoch würde ich persönlich nur ungern auf den Designer verzichten da er einen schon sehr viel Arbeit abnimmt, gerade wenn man Dinge relativ positionieren will, aber hab auch schon böse Überraschungen erlebt.

Kleiner Tipp: Wenn der Designer mal wieder Mist baut und man den alten Stand wahren will einfach kurz den Reiter mit der Designerform schließen und die Änderungen NICHT speichern. Ist zwar auch die Arbeit seit dem letzten Speichern verloren aber meiner Erfahrung nach ist die deutlich einfacher zu rekonstruieren als die Fehler des Designers wieder auszubügeln. Wobei ich nicht richtig von Fehlern sprechen würde, in meinen Fall wurde einfach die Z-Order verändert nachdem ich auf ein Control geklickt hab und VS dies wohl als verschieben angesehen hat -> Control verschwunden.

27.03.2008 - 09:23 Uhr

Ich würd der Einfachheitshalber erstmal zur Listbox greifen. Der ListView ist gerade für einen Anfänger schon n sehr kompliziertes Control. Solang nur Text dargestellt werden soll in dem Bereich sollte die Listbox auch ausreichen.

Wenn man sich natürlich ein bisschen reinquälen will dann wär der ListView ideal. Der Lerneffekt ist da, gerade für einen Neuling, immens. Ich hab damals viel über .Net gelernt nur indem ich mich mit dem Control beschäftigt habe. Sehr Empfehlenswert finde ich dazu das entsprechende Kapitel aus dem Openbook welches unter Resourcen verlinkt ist 🙂

26.03.2008 - 10:39 Uhr

Und auch net gerade billig, hätte wohl erwähnen sollen das ich ein kostenloses OpenSource Control suche. Trotzdem danke für die Antwort.

26.03.2008 - 08:42 Uhr

Hallo,

ich stoße immer öfters an die Grenzen des von Microsoft mitgelieferten Listviews. Mich stört das viele wichtigen Werte nicht geändert werden können bzw. fest im auszuführenden System hinterlegt sind. Hier wär der Abstand der Icons in den Imagelistansichten ein großer Kritikpunkt, zwar kann die größe der einzelnen Objekte selbst geändert werden aber der Abstand bleibt immer gleich, ab einer gewissen größe der Bilder verliert man einfach unnötig viel Platz. Das ist unpraktisch und sieht nicht sehr professionel aus. Eine Lösung wäre hier die kleine Imagelistansicht zu verwenden, diese dagegen scheint die Länge des Textes zu ignorieren. Die Bilder überschneiden so den angefügten Text, welches in meiner Kofiguration(Bilder 60x60 Pixel) schon bei ~10 Zeichen passiert. Mir ist klar das der ListView eher für Icons als für größere Vorschaubilder entwickelt wurde aber ein paar Eigenschaften mehr hätten da nicht geschadet, und nach etlichen Beiträgen hier im Forum bin ich nicht der einzige der mit dem Steuerelement auf dem Kriegsfuß steht.

Ich hab jetzt auch im Netz schon mehrere Umsetzungen eines alternativen/erweiterten Listview gefunden aber die meißten beschäftigen sich nur mit der Detailansicht und behandeln die Ansichten der Icons eher nebensächlich, aber gerade die wären für mich interessant.

Vielleicht wird euch am besten klar was ich meine wenn ich einfach schildere was ich mit dem Listview vorhabe, evtl. ist es prinzipiell das falsche Steuerelement:

Meine Anwendung liest aus einer Datenbank Produktinformationen aus und die Produktfotos sollen dem Benutzer in einer Übersicht dargestellt werden, der Benutzer sollte aus mehreren Ansichten wählen können(große/kleine Icons/Listenansicht). Jedes Produkt hat eine kleine Beschreibung sowie mehrere Eigenschaften(Material, Produktgruppe, Abmessungen etc.) welche in einer übersichtlichen Liste dargestellt werden sollen. Der Listview hat sich Anfangs für dieses Einsatzgebiet angeboten aber durch die angesprochenen Probleme würde ich gern ein passenderes Steuerelement finden.

19.03.2008 - 13:01 Uhr

Desweiteren verwende ich auch gern mal Strukturen wenn ich öfters sehr viele Werte zwischen Methoden hin- und herschieben muss. Sprich ich übergebe einfach eine Struktur statt zig einzelne Werte.

Das ist aber ein klarer Fall für Klassen. Wenn du die Struktur übergibtst, wird die Struktur komplett kopiert, also alle einzelnen Werte. Wenn die Struktur sagen wir 1kb Daten enthält wird also 1kb kopiert. Bei einer Klasse würde nur die Referenz kopiert werden (ich würd bei 32bit Maschinen auf 4 Byte tippen, aber das kann durch .net overhead auch etwas mehr sein), also deutlich weniger Performanceverlust.

Guter Einwand, werd da wohl nochmal darüber nachdenken.

19.03.2008 - 08:27 Uhr

Das Funktioniert auch genauso, aber die Settings müssen den Scope "User" haben. "Application" Settings sind nicht vom Code aus zu verändern, zumindest wär mir das nicth bekannt.

Edit: Achja, vergiss net die Settings am ende auch mit der Methode .save() zu sichern!

19.03.2008 - 08:25 Uhr

Ich verwende Strukturen gerne wenn ich viele Objekte laden will die sich nicht mehr ändern. Z.B. lade ich alle Normalien eines Herstellers als Strukturen da mein Programm diese nur Anzeigen aber nicht verändern soll. Als ich mich damals im Openbook über das Thema eingelesen hab hieß es das die Sturkuturen bei solchen Fällen(wenig Daten pro Objekt; sehr viele Objekte) weniger Overhead erzeugen wars für mich eigtentlich klar was zu nehmen ist.

Desweiteren verwende ich auch gern mal Strukturen wenn ich öfters sehr viele Werte zwischen Methoden hin- und herschieben muss. Sprich ich übergebe einfach eine Struktur statt zig einzelne Werte. Das mach ich aber weil ich mich dann beim Programmieren leichter tue und weniger weils n tieferen Sinn hat.

17.03.2008 - 14:00 Uhr

Hi herbivore,

danke für die prompte Antwort. Ich seh grad das der Fehler bei einem der beiden Aufrufe tatsächlich beim Start des Threads auftritt. Nur bringt komischerweise der andere Thread mitten während seiner Arbeit diesen Zugriffsfehler was ja eigtl gar net sein sollte da die Datei sonst von niemanden verwendet wird.

Edit: Ich muss meine letzte Antwort wohl revidieren, jetzt läuft zwar alles tadellos aber ich bekomme dennoch in regelmäßigen Abständen diese Exception, ohne das sie irgendwelche Auswirkungen hat. Der FileStream wird auch immer am ende der Methode geschlossen.