Laden...

Forenbeiträge von Cat Ingesamt 771 Beiträge

03.07.2013 - 19:20 Uhr

Hast du denn schon mal ge'debugged', ob überhaupt die Eventhandler angesprungen werden?

30.06.2013 - 11:56 Uhr

Und ich kenne noch CodeMaid und dessen Spade-Window (Code Digging).

28.06.2013 - 17:50 Uhr

Hi,

deine letzte Zeile (Controls.Add) überschreibt wieder den Parent, d.h. entweder die letzte Zeile löschen oder aber stattdessen


ObjektPanel.Controls.Add(box);

Und die Eventzuweisung(en) kannst du auf


box.MouseDown += pictureBox_MouseDown;

kürzen.

27.06.2013 - 19:09 Uhr

Hi,

angelehnt an How can I create a data binding in code using WPF?


DataGridTextColumn textColumn = new DataGridTextColumn();
Binding binding = new Binding("Name");
binding.Source = stateCollection;
textColumn.SetBinding(DataGridColumn.HeaderProperty, binding);

Und deine OnPropertyChanged-Aufrufe sind falsch, denn du mußt den exakten Propertynamen (inkl. Groß-/Kleinschreibung) verwenden:


        private int _id;
        public int Id
        {
            get { return _id; }
            set { _id = value; OnPropertyChanged("Id"); }
        }

        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; OnPropertyChanged("Name"); }
        }

22.06.2013 - 12:43 Uhr

Lass doch mal die Zeile(n)


tbLänge.Text = Convert.ToString(länge);

weg. Hat Console32 ja schon geschrieben, dass das Zurückschreiben sinnlos ist.

16.06.2013 - 14:13 Uhr

Das ist aber sehr eigenartig, d.h. er landet im Window_MouseMove, obwohl im VOLUMEBAR_PreviewMouseMove e.Handled auf true gesetzt ist?
Wie hast du die Events denn registriert?

16.06.2013 - 14:09 Uhr

Hi nochmals,

es geht auch ohne Array, mit zwei ineinander verschachtelten Schleifen. Du mußt dir dann in einer Variablen die bisher häufigste Zahl merken.
Pseudocode:


int max_zahl = 0;
int max_counter = 0;
Für jede Zahl in der Liste (aktuelle_zahl)
  Innere Schleife: zähle die Häufigkeit dieser Zahl in der Liste (counter)

  wenn counter > max_counter, dann max_zahl = aktuelle_zahl, max_counter = counter

P.S. wenn du nur ganze Zufallszahlen in der Liste speichern willst, dann nimm List<int>

16.06.2013 - 11:34 Uhr

Hi TobiPin,

am einfachsten geht das mittels Linq: [erledigt] LINQ - Häufigstes Element in einem Array finden
Da du jedoch noch Anfänger zu sein scheinst, könntest du auch selber ein sog. Histogramm erstellen, d.h. ein int-Array erstellen und für jede Zufallszahl den Zähler um 1 erhöhen. Und am Ende dann die Zahl mit dem größten Zähler ermitteln.

16.06.2013 - 10:13 Uhr

Hi,

so ganz kann ich deiner Beschreibung nicht folgen, aber hast du schon mal die Handled-Eigenschaft ausprobiert:


        private void VOLUMEBAR_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            e.Handled = true;

            if (e.LeftButton == MouseButtonState.Pressed)
            {
                VOLUME = (float)(Mouse.GetPosition(VOLUMEBAR).X / VOLUMEBAR.ActualWidth);
                RecalcVolume();
            }
        }

15.06.2013 - 15:07 Uhr

Hi,

direkt ist das nicht möglich, aber orientiere dich mal an [Tutorial] Gezeichnete Objekte mit der Maus verschieben
Dort steht wie man erkennt, wann der Mauszeiger über einem geom. Objekt ist - und du brauchst dann ja das Gegenteil, d.h. merke dir das aktuelle Element und frage dann im MouseMove ab, ob es immer noch dasselbe Objekt ist oder nicht.

14.06.2013 - 21:31 Uhr

Ich habe oben noch mal nacheditiert (der Thread ist wahrscheinlich jetzt nicht mehr ganz einfach nachzuvollziehen?).

Noch ein Edit:
ich sehe gerade, daß du ja schon mittels


string source = Properties.Resources.source;

den Source-Code einbindest (aber bisher nicht benutzt). Dann kannst du ja meinen Tipp direkt befolgen.

14.06.2013 - 21:18 Uhr

Bei deinen anderen beiden TextBoxen (sowie der Variablen 'name') mußt du das natürlich auch so abändern.
Und kapsel den CodeDom-Code in eine eigene Methode (anstatt direkt im Button-Click) und benenne deine GUI-Elemente (TextBoxen etc.) besser.

Aber mal ein anderer Tipp:
Viel einfacher könntest du es dir machen, wenn du den Source-Code als (Resource-)Datei hältst und einliest und dann vor dem Kompilieren z.B. mittels Ersetzen von "%FTP_SERVER%" etc. die TextBox-Werte dort einträgst.


string code = File.ReadAllText("SourceCode.template"); // oder als Resource, z.B.  Properties.Resources.SourceCode
code = code.Replace("%FTP_SERVER%", textboxFtpServer.Text);
// und die anderen auch noch ersetzen

14.06.2013 - 21:12 Uhr

Sorry, da haben wir wohl beide gleichzeitig editiert.

14.06.2013 - 21:07 Uhr

Sorry, hatte die Anführungsstriche oben vergessen:


Temp.AppendLine("FtpWebRequest request = FtpWebRequest.Create(\"" + textBox6.Text + "\") as FtpWebRequest;");

Beachte den Backslash als Escapezeichen (und dafür dann @ entfernt).

14.06.2013 - 20:57 Uhr

Hi, meinst du


Temp.AppendLine(@"FtpWebRequest request = FtpWebRequest.Create(" + textBox6.Text + ") as FtpWebRequest;");

??? Die TextBox ist doch in deinem Programm und nicht im zu kompilierenden Source!

09.06.2013 - 11:23 Uhr

Schau dir mal das DataGridView.EditingControlShowing-Ereignis an - dort kannst du dann die ComboBox individuell füllen.

03.06.2013 - 19:35 Uhr

Hi Levion,

dies ist ein bekanntes Problem aus der Landwirtschaft für automatisches Lenken mit GPS (GPS steering autopilot). Dabei wird üblicherweise eine sog. Referenzlinie benötigt, anhand deren dann der Rest des Feldes abgefahren wird.
Ich denke aber nicht, daß du einen einfachen Algorithmus dafür finden wirst (soweit ich weiß wird das meiste mit Simulationsprogrammen à la MATLAB/Simulink o.ä. umgesetzt, d.h. dort ist jahrelange Entwicklung drin).

12.05.2013 - 14:52 Uhr

Stimmt, so geht es natürlich auch.
Aber ich würde die Variable nicht "predicate" nennen, denn dies wäre ja der gesamte Ausdruck, sondern z.B.


t.Count(test => test is TestA)

12.05.2013 - 12:45 Uhr

int countOfTestA = t.OfType<TestA>().Count();

11.05.2013 - 14:34 Uhr

Nimm erst einmal


    class Square : Button
    {
        public Square()
        {
            this.Size = new Size(40, 40);
            this.Text = "Test";
        }
    }

Dies müsste beim Adden zu einem Panel dann einen 40x40 Button mit dem Text "Test" erzeugen.

07.05.2013 - 19:23 Uhr

Hi,

dazu solltest du ein Storyboard verwenden: Animation using Storyboards in WPF

30.04.2013 - 17:21 Uhr

Hi,

benutze mal Invoke anstatt BeginInvoke, damit direkt die Aktion ausgeführt wird.

29.04.2013 - 19:35 Uhr

Was genau ist dir denn unklar?
Packe die Images (nacheinander) bei Strg+Click in eine Liste und beim Drag&Drop verschiebst du sie an die neue Position.

28.04.2013 - 10:06 Uhr

Hi,

der eigentliche Fehler wird wohl sein, dass bisher nur auf statische Methoden zugegriffen wird. Richtig ist


Dispatcher.CurrentDispatcher.BeginInvoke( () => ausgabe() );

17.04.2013 - 19:36 Uhr

Probiere mal


Encoding enc = System.Text.Encoding.GetEncoding("x-IA5-German");
System.IO.File.WriteAllText(strFile, text, enc);

Habe ich von Unicode in ISO 646-DE wandeln?

Edit: ups, zu spät 🙁

16.04.2013 - 19:26 Uhr

Hi tmase,

verwendest du den XmlSerializer? Dieser unterstützt bestimmte Attribute: Steuern der XML-Serialisierung mit Attributen, aber du benötigst dafür die Implementierung aller Klassen - und als Property mußt du dann deren Basisklasse verwenden (kein Interface).
Lies dir auch mal XML serialization of interface property dazu durch.

17.03.2013 - 10:23 Uhr

Hi,

stell doch einfach temporär die DropBox-Synch aus: Dropbox: Synchronisieren pausieren

15.03.2013 - 18:48 Uhr

Erstell einfach eine Setter-Methode SetBlock(x, y, z, value).

15.03.2013 - 18:45 Uhr

Du könntest ein rahmenloses (FormBorderStyle = None) Fenster erstellen, mit TopMost = true und darauf dann den Button platzieren.

11.03.2013 - 19:24 Uhr

Wo genau erhältst du denn die Exception?
Ich tippe darauf, daß du zuerst den Parent von "paper" removen musst, bevor du ihn als Content setzen kannst.

Englischer Beitrag dazu: http://stackoverflow.com/questions/2566050/how-to-remove-parent-of-control

Ups, sehe gerade, das machst du ja schon mittels

WrapPanelPaper.Children.Remove(paper);

🤔

Ok, habe jetzt nochmal genauer deinen Beitrag gelesen... und die Lösung ist doch klar:
du mußt es vom richtigen Parent removen, also


Panel parentPanel = paper.Parent as Panel;
parentPanel.Children.Remove(paper);

🙂

11.03.2013 - 18:06 Uhr

Hi,

wenn T generell vom Typ IBaseEntity innerhalb des Repository sein soll, dann gib es der Klasse gleich mit:


public abstract class Repository<T> : IRepository<T>, IDisposable where T : IBaseEntity, new()

Ansonsten mußt du halt innerhalb der Methode entsprechend casten.

09.03.2013 - 12:29 Uhr

if (!File.Exists(PathAndFileName.ToString()))

Und bei File.CreateText dann ebenfalls ToString() verwenden.

Und bitte editiere deinen Beitrag nochmal...

08.03.2013 - 18:25 Uhr

Du könntest folgendes nehmen:


var bs = (BindingList<T>)Activator.CreateInstance(typeof(BindingList<T>));

bzw. mit Parameterübergabe


var bs = (BindingList<T>)Activator.CreateInstance(typeof(BindingList<T>), new object[] { list });

07.03.2013 - 13:32 Uhr

Da hast du wohl etwas falsch verstanden. Wie herbivore schon geschrieben hat, bedeutet "vorhandene Daten werden nicht geändert", dass man nicht in-place Daten verändern kann (denn es gibt keine Variablen im klassischen Sinne).
Hier beispielsweise der Quicksort-Algo:


qs [] = []
qs (x : xs) = qs [u | u <- xs, u <= x] ++ [x] ++ qs [v | v <- xs, v > x]

Rufst du nun "qs ('c':'b':'a':[])" auf, so wird als Ergebnis eine neue Liste zurückgegeben: 'a':'b':'c':[].

Jedoch bietet z.B. Haskell zusätzlich modifizierende Sprachelemente an, s z.B. Why is the minimalist, example Haskell quicksort not a “true” quicksort?

Funktionale Programmierung gibt einem eine andere Denkweise, Probleme zu lösen. Meines Erachtens denkt man dabei viel abstrakter (anstatt sich mit konkreten Sprachelementen wie Variablen, Schleifen oder aber in C oder veraltetem C++ mit Zeigern herumzuschlagen).
Da sich aber die OOP Sprachen (wie C#, C++) in der Zwischenzeit vieler funktionalen Elemente (z.B. Lambda-Ausdrücke), angeeignet haben, ist es schwer noch eine absolute Trennung zu machen.
Und auch LINQ (da es ja an SQL angelehnt ist), stellt ja ein deklaratives Sprachelement dar.

23.02.2013 - 09:57 Uhr

Zumindestens bei einem BlueScreen kann man einstellen, dass dann automatisch ein Neustart durchgeführt werden soll. Im Anhang Einstellung für XP (Systemeinstellung -> System -> Erweitert - > Starten und Wiederherstellen -> Einstellungen).

09.02.2013 - 15:17 Uhr

Hi CoderboyPB,

"Interne Ausnahme" heißt auf Englisch "InnerException" und diese Eigenschaft solltest du dir bei der geworfenen Exception im VS anschauen.

03.02.2013 - 12:15 Uhr

Hi,

da wird wohl irgendwo eine Exception geworfen (welche von Form.Load gecatcht wird). Debugge mal Zeile für Zeile, ich tippe auf GetDirectory oder GetFiles...

30.01.2013 - 12:29 Uhr

Hi and welcome

die einzelnen TabPages werden (normalerweise) erst erzeugt, wenn der User dorthin wechselt. Du müsstest einmal das Handle abrufen (dann wird intern CreateHandle aufgerufen):


var handle = tabControl.TabPages[1].Handle;

s.a. Antwort von herbivore in Tabcontrol mit Datagridview, Problem bei der Anzeige

26.01.2013 - 12:55 Uhr

Hi,

das Parent-Control muß selbst Transparenz unterstützen, sonst wird immer der Inhalt in das Child-Control kopiert (daher darfst du auch nicht FillRectangle oder Clear aufrufen!).
Wie es richtig geht, steht z.B. in http://www.bobpowell.net/transcontrols.htm oder Clearing the graphics of a transparent panel
(man sollte sich also ein bisschen mit den WinAPI-Messages auskennen)

08.01.2013 - 19:18 Uhr

Habe gerade mal danach gesucht und How do I set an image for some but not all nodes in a TreeView? (untere Antwort) gefunden bzw. der Link dort auf How to create a TreeView node with no image?.
Also Index auf hohen Wert setzen (größer als Anzahl in der ImageList) und die fehlenden Linien selber zeichnen (nicht schön, aber selten).

07.01.2013 - 19:48 Uhr

Hi,

für Dateipfade würde ich immer eine readonly-TextBox nehmen, damit der User die Möglichkeit hat per Copy (Ctrl+C) den Pfad daraus zu extrahieren. Und für Rechtsbündigkeit SelectionStart auf Length setzen:


textBox.SelectionStart = textBox.TextLength;

Um Dateipfade zu kürzen gibt es auch die WinAPI-Funktion PathCompactPathEx

Oder aber mittels DrawText selber zeichnen: C# WinForms - Smart TextBox Control to auto-Format Path length based on Textbox width und dann TextFormatFlags.Right (statt Left) benutzen.

19.12.2012 - 17:50 Uhr

Hi,

könntest du mal einen Screenshot zeigen - bisher kann ich mir mit deiner Beschreibung nicht so recht etwas vorstellen.

16.12.2012 - 12:31 Uhr

Hi,

den Fehler solltest du aber selber mittels des Debuggers schnell rausfinden. Mit "binaryReader.Stream.Position" kannst du dir ja jeweils die aktuelle Position ausgeben lassen.

Ich würde dir auch raten


byte[] numArray = binaryReader.ReadBytes(binaryReader.ReadInt32());

in zwei Anweisungen (bzw. noch besser in eine eigene Methode) zu schreiben, damit du dir explizit den Längen-Wert in einer Variablen anschauen kannst.

Hinweis: du solltest auch besser, die Methode nicht gleichzeitig mit UI-Zugriffen vermischen (Stichwort: Separation of Concerns (SoC)).

08.12.2012 - 15:47 Uhr

Hi,

mit Überreden meine ich, daß man nicht einfach


DelegateMethod(Add);

schreiben darf (-> Compilerfehler: "kann nicht Methodengruppe in Delegate umwandeln"), sondern eben den Delegate-Typ explizit angeben muss.

ref und out habe ich bisher noch nicht ausprobiert, denke aber, dass dann DynamicInvoke nicht aufrufbar ist (d.h. eine Exception geworfen wird).

So ganz weiß ich jedoch nicht, ob nicht doch einfach Events für dein Vorhaben besser sind - welche Nachteile siehst du denn konkret? Selbst für ein kleines Konsolenprojekt ist doch der Aufwand gering; aber zeig mal etwas Code, wie du es dir vorstellen würdest.