Laden...

Forenbeiträge von Cat Ingesamt 771 Beiträge

05.02.2015 - 12:55 Uhr

Kann es sein, dass du Binärdaten und Hex verwechselst?
Üblicherweise werden die Daten binär verschickt (d.h. einfach als byte[]) und nicht in einem menschenlesbaren Format (wie z.B. Hex-Strings).

26.01.2015 - 14:35 Uhr

Hi,

schau dir mal die folgenden Projekte an:
CAD-Programm zur Schaltplanerstellung (Anfängerprojekt)
Bluestone - Logical Gate Simulator

Weitere habe ich online gefunden:
OpenDiagram
Diagram.NET

Eines davon sollte dir sicherlich weiterhelfen.

22.01.2015 - 16:14 Uhr

Um das

Meinst du die null-Referenz? zu konkretisieren:


DateiMenu[3].Function = null;

Du mußt aber auch dann die Abfrage auf "!= null" einbauen, wenn du die Funktion aufrufst.

Man merkt an deinem Code auch an, daß du aus der C-Ecke kommst. Viele Dinge gehen um einiges einfacher in C#:

  • baue dir einen Konstruktor für deine MenuEntry-Struktur (oder besser Klasse) und dann kannst du einfach

MainMenu[0] = new MenuEntry("Datei", Menu0.DateiMenu);

schreiben.

  • die Länge eines Arrays ist einfach

MainMenu.Length;

Daher brauchst du diesen Wert noch nicht einmal als eigenen Parameter an die Methode übergeben. Außerdem kannst du auch 'ref' dort entfernen (dies wird nur benötigt, wenn du in der Methode per 'new' ein neues Objekt anlegen würdest).

Und bzgl. deiner ganzen Klassenstruktur hat Ezio ja schon geschrieben, was man besser machen kann (statische Klassen erzeugt man in C# nur ganz selten).

18.01.2015 - 14:24 Uhr

Hast du auch schon das nichtgenerische Interface IList probiert, denn BindingList<T> implementiert ja diese und nicht die generische Version?

Oder aber du erbst von BindingList<T> und überschreibst die virtuelle Methode


protected virtual void RemoveItem(int index)

und rufst darin die Basisklassenmethode auf.

11.01.2015 - 17:52 Uhr

Ich denke, es liegt daran, daß die Settings in einer anderen Datei abgespeichert werden, als von dem Projekt, der diese dann wieder ausliest (s.a. [Tutorial] Konfigurationsmodell im .NET Framework).

10.01.2015 - 14:08 Uhr

Hi,

eine Möglichkeit wäre per P/Invoke die WinAPI Funktion GetAsyncKeyState zu benutzen. Nimm am besten den "C# Sample Code 2".

08.01.2015 - 20:10 Uhr

Versuch dich mal an der BASS.NET (weiter unten auf der Seite als Download).

30.11.2014 - 09:41 Uhr

Auf der Seite ist doch beschrieben, was man zu machen hat.
Des weiteren gibt es unter Examples Projekte je Datenbank.
Und speziell für SQLite unter Get started with LINQ to SQLite: LinqToDB.Templates\CopyMe.SQLite.tt.txt

29.11.2014 - 14:47 Uhr

Hast du den TeamViewer 8 installiert? Hier hat jemand einen ähnlichen crash: visual studio 2013 hangs/crash to desktop when work with teamviewer 8

02.11.2014 - 09:09 Uhr

Die CSharpTest.Net code library hat unter WhirlpoolManaged.cs eine entsprechende Implementierung.

26.10.2014 - 16:11 Uhr

Sorry, so genau kenne ich mich damit nicht aus. Aber das Internet hat noch folgenden Beitrag: How can I get rid of the “The target assembly contains no service types” error message in VS2008? (Antwort bzgl. WCF Options)

Ansonsten einfach mal nach dem englischen Error "WCF The target assembly contains no service types" weitersuchen.

26.10.2014 - 12:19 Uhr

@unconnected: Entsprechend des JSON-Beispiels habe ich es aber so verstanden, dass einfach nur eine Klasse mit automatischen Gettern und Settern erstellt werden soll und nicht z.B. so etwas


        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("ProductName")]
        public List<System.String> ProductName {
            get {
                return this.productNameField;
            }
            set {
                if ((this.productNameField != null)) {
                    if ((productNameField.Equals(value) != true)) {
                        this.productNameField = value;
                        OnPropertyChanged("ProductName");
                    }
                }
                else {
                    this.productNameField = value;
                    OnPropertyChanged("ProductName");
                }
            }
        }

Und die Beschränkung auf reine Modellklassen (POCOs) kann meines Erachtens weder XSD noch Xsd2Code.

26.10.2014 - 09:52 Uhr

@unconnected:

Ich spreche hier nicht von XML-Serialisierung und umgekehrt, sondern, dass man das XML Dokument als eine Art Bauvorlage nutzt um z.B. Models zu erstellen mit den gewünschten Properties.

24.10.2014 - 18:48 Uhr

Du brauchst beim PropertyGrid nur SelectedObject mit einer Instanz deiner Struktur zuweisen: Using PropertyGrid
Die Struktur sollte dabei aber aus Properties bestehen und nicht nur aus "public fields", am einfachsten per "automatic properties".

20.10.2014 - 18:46 Uhr

Hi ihr beiden,
der Namespace muss beim Konstruktor angegeben werden, s. [erledigt] Deserialisierung schlägt fehl (xmlns=... wurde nicht erwartet)

09.10.2014 - 21:19 Uhr

Du brauchst nicht selber den Umbruch vorzunehmen. Mit Graphics.DrawString kannst du bei Übergabe des Rectangle-Parameters den Bereich eingrenzen und es wird automatisch ein Soft-Linebreak vorgenommen.

06.10.2014 - 09:15 Uhr

Hi,

How to: Create Custom Cultures sowie Creating/Extending a Culture sollten dir dabei helfen. Als wichtigste Klasse hilft dir dabei CultureAndRegionInfoBuilder.

27.09.2014 - 10:53 Uhr

In welcher Methode (bzw. Event) wird dein Code ausgeführt? Falls es aus dem Konstruktor geschieht, verlagere das Setzen der Backgroundcolor in das Shown-Event der Form - oder aber benutze das CellFormatting-Event des DGV.
Ein paar (englische) Links dazu:
DataGridView row's background color is not changing
C# How to change row color in datagridview?
changing row backcolor in datagridview

26.09.2014 - 20:12 Uhr

Hi,

das nennt sich "modaler Dialog" und wird einfach durch


form.ShowDialog();

anstatt einfach nur Show() aufgerufen.

23.09.2014 - 18:50 Uhr

Hi,

die Sekunden scheinen auf jeden Fall schon mal im 2. Byte zu stecken. Und die Uhrzeit (h und m) dann wohl in den Bytes 9 und 10.
Und wenn ich richtig gerechnet habe, dann müsste das 10. Byte die Minuten darstellen und zwar als 1/241 Anteil (warum auch immer dieser Wert und nicht 255 oder 256), z.B.
0xE5 = 229 -> 229 * 60 / 241 = 57
0x9D = 157 -> 157 * 60 / 241 = 39

Nur beim 9. Byte komme ich nicht einfach auf die Stunden oder das Datum:
93 -> 2014-09-19 12h
B3 -> 2014-09-19 12h

96 -> 2014-09-22 12h
B7 -> 2014-09-23 13h

???

21.09.2014 - 19:32 Uhr

Setze mal alle Properties auf "public" (da DataBinding per Reflection gemacht wird und dort nur explizit nach "public" properties gesucht wird).

21.09.2014 - 09:02 Uhr

Dann schau mal nach, ob du zur Runtime Binding Warnungen erhältst: Debugging WPF data bindings (im Abschnitt "Using trace messages").

20.09.2014 - 16:57 Uhr

@Coffeebean: es geht hier wohl um das ToggleButton.IsChecked Property (RadioButton und CheckBox sind davon abgeleitet) und der 3. Status ist dabei "Indeterminate".

Man könnte bei einem Nullable<bool> auch so abfragen:


if (isChecked.HasValue && isChecked.Value)

Aber in diesem Fall (oder auch zum Beispiel bei CommonDialog.ShowDialog()) ist wohl die Abfrage auf "== true" am sinnvollsten. Eventuell sollte man das mal in dem FAQ-Beitrag ergänzen (oder nur darauf hinweisen, wenn auch wirklich ein bool und kein bool? vorliegt)?!

20.09.2014 - 14:13 Uhr

Und welchen Fehler?

Hier noch ein Tutorial: Binding DataGrid in WPF

20.09.2014 - 12:51 Uhr

Hi,

das sind aber Grundlagen - du musst die Spalten noch an die entsprechenden Properties (deiner Klasse NewCost) binden:


<DataGridTextColumn Header="Datum" Binding="{Binding Date}"/>

und das gleiche für die anderen Properties...

Und der nächste Schritt wäre dann die Verwendung von MVVM.

20.09.2014 - 12:43 Uhr

0.799999... (d.h. 0.7Periode9) entspricht aber 0.8!
Lies dir mal Dezimalsystem: Doppeldeutigkeit der Darstellung durch.

Oder aber mit deiner Formel ausgedrückt:
0.799999... = 7/10 + (9/9)/10 = 0.7 + 0.1 = 0.8

13.09.2014 - 05:19 Uhr

Du könntest mal versuchen die DataSource erst im Control.HandleCreated Event zu setzen.

26.08.2014 - 18:38 Uhr

Hi,

beim Empfangen kannst du nicht davon ausgehen, immer die gesamten Daten am Stück zu erhalten.
Du mußt also den Byte-Buffer selber entsprechend stückweise füllen (beachte den 2. Parameter von Read).

Des weiteren solltest du die Größe des Bildes vorab als ein Int (oder Long) verschicken, damit du beim Receive den Buffer vorher korrekt setzen kannst (und weißt, wann das Bild komplett gelesen wurde).

Und entferne die leeren try-catch Blöcke!

11.08.2014 - 20:20 Uhr

Hi,

überschreibe bei deiner Klasse die ToString()-Methode:


virtual string override ToString()
{
    return Vorname + ", " + Nachname + ", " + Alter + ", " + Wohnort + ", " + Straße + ", " + Hausnummer;
}

03.08.2014 - 09:58 Uhr

Wenn du willst, dass sich die ItemSource aktualisiert, dann musst du diese auch angeben:


this.NotifyPropertyChanged("ItemsSource");

Edit: Du musst also selber ein Property in deiner Klasse UriList erstellen (welche die ObservableCollection hält) und daran binden - und den Propertynamen dann statt "ItemsSource" einsetzen! Ein Beispiel gibt es bei INotifyPropertyChanged and ObservableCollection WPF (das Property in der Antwort von m-y heißt dort "Campers").

Oder reagierst du irgendwo noch auf "IsProcessed" (dann muss es aber sowieso ein Property sein!)?

Designtechnisch ist das aber sicherlich nicht der beste Weg, da deine Klasse UriObject sicherlich nicht direkt wissen sollte, dass sie an "ItemsSource" gebunden ist. Da gibt es ein paar andere Ansätze dafür (z.B. eine eigene Klasse von ObservableCollection ableiten oder aber Event Delegation z.B. per CollectionView), aber erst mal muss es überhaupt funktionieren.

Und auch die Verwendung vom BG bei WPF ist auch eher bei Übernahme von Altprojekten (aus WinForms) zu sehen; ich würde auch eher (wie DaMoe80) die TPL nutzen.

02.08.2014 - 11:43 Uhr

Hi,

klar wird dort Controls.Add aufgerufen (aber nicht bei dem Code für die einzelnen Controls sondern bei den Form-Properties ganz unten):


			// 
			// Form1
			// 
			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
			this.ClientSize = new System.Drawing.Size(292, 266);
			this.ContextMenuStrip = this.contextMenuStrip;
			this.Controls.Add(this.buttonSave);
			this.Controls.Add(this.textBox);
			this.Controls.Add(this.checkedListBox);
			this.Controls.Add(this.menuStrip);
			// ...

22.07.2014 - 19:11 Uhr

Ist die ProcessId denn gültig und richtig (kannst ja mit dem Taskmanager vergleichen - PID als Spalte hinzufügen)?

13.07.2014 - 14:17 Uhr

Hi,

setze mal


SizeConst = 6

10.07.2014 - 19:35 Uhr

Ich frage mich auch, warum man einen Button überdecken sollte?

10.07.2014 - 19:33 Uhr

Selbst bei String.Split kann man mehrere Separators angeben.

09.07.2014 - 18:29 Uhr

Hi,

warum siehst du dadrin ein Problem? Benutze für Pfadoperationen immer die Path-Klasse und es ist egal, welcher Separator benutzt wird.

07.07.2014 - 20:36 Uhr

Aber du hast doch ein WPF-Programm, also dem ersten Link von Palin folgend


if (e.LeftButton == MouseButtonState.Pressed) // oder Released

15.06.2014 - 05:51 Uhr

Hi,

System.UInt16[] ist ein Array von UInt16 Werten, also nicht ein einzelner Wert. Also entweder auf einen konkreten Index (und dann dessen ToString() Methode) zugreifen oder aber z.B. die String.Join Methode verwenden, um einen String zu erzeugen.

08.06.2014 - 20:07 Uhr

Zusätzlich noch ohne UI:


System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en");

07.06.2014 - 13:20 Uhr

Du verwendest also schon eine DataTable, dann solltest du den Export auch über die DataTable laufen lassen.
Wenn du neue Spalten hinzufügst, dann solltest du dies auch direkt bei der DataTable machen (so dass das DGV diese durch das Binding auch direkt übernimmt).

07.06.2014 - 10:06 Uhr

Hi,

arbeite mit einer DataTable ('DataBinding'), anstatt direkt mit den DGV-Rows und binde diese dann an die DGV Eigenschaft "DataSource". Dann spielt es keine Rolle, wo welche Spalte angezeigt wird.

06.06.2014 - 20:04 Uhr

Der Index bezieht sich auf das übergebene Byte-Array. Wenn du dort an den Anfang reinschreiben willst, dann übergibst du 0.

05.06.2014 - 18:37 Uhr

Du meinst zur Laufzeit? Hast du AllowDrop beim TableLayoutPanel gesetzt?

02.06.2014 - 19:46 Uhr

Hi,

ich denke, es liegt daran, dass bei Änderung des Maximum-Wertes intern in der WinAPI automatisch ein Refresh (anstatt nur ein Invalidate) durchgeführt wird. Dies kann man mittels der WM_SETREDRAW message kurzzeitig unterdrücken (unten ist auch ein C#-Example).