Laden...

Forenbeiträge von Cat Ingesamt 771 Beiträge

22.04.2016 - 13:31 Uhr

Hi,

meinst du so etwas wie [FAQ] Assistenten/Wizards: Mit Windows Forms eine Art Frameset einer Website nachbauen?
Ansonsten könntest du auch ein TabControl verwenden, wie in Menu vorlage umsetzen vorgeschlagen.

19.04.2016 - 13:36 Uhr

Hi NiggiBS,

in C# programmiert man nicht wie in C, daher sind deine beiden Tipps hier nicht so sinnvoll.

19.04.2016 - 13:26 Uhr

Erstelle dir für die Zeile ein eigenes UserControl, d.h. Label mit zwei TextBoxen und einem Button.
Nun kannst du dynamisch (wie in der FAQ beschrieben) dieses UserControl in einer Schleife x-mal erzeugen.

Hier 2 Links:
Custom Controls in Visual C# .NET
User Control in C#

01.04.2016 - 15:42 Uhr

Wieso verwendest du dafür DependencyProperties? Benutze MVVM, d.h. erstelle dir ein ViewModel und binde an dessen Eigenschaften.

01.04.2016 - 13:46 Uhr

OK, dann probiere ich es am Wochenende mal aus.

01.04.2016 - 10:08 Uhr

Muss man eigentlich zuerst das Update 1 installieren? VS Community Edition 2015 hat mir gestern abend nur dieses per Notification angeboten, nicht das Update 2.

Und das Update 2 ISO File ist wirklich 7 GB groß (das Original ISO war ja nur ca. 4 GB)???

31.03.2016 - 17:37 Uhr

Ich meine die vom OP im Post zuvor:


timer2.enable = false

Richtigerweise muss es natürlich


timer2.Enabled = false;

lauten.

Seid ihr so schwer von Kapee? 😉

31.03.2016 - 16:24 Uhr

@LaTino: was willst du mir sagen (schwer-von-begriff)?

31.03.2016 - 16:14 Uhr

Setze einfach im Timer_Tick diese Codezeile (vor der MessageBox).

31.03.2016 - 09:37 Uhr

Bei deinem Code müßte auch


port1.Write("<SWITCH_SCREEN,1>" + Environment.NewLine);

funktionieren - nur ist halt WriteLine eleganter zu schreiben (als explizit immer Environment.NewLine anzuhängen).

16.03.2016 - 16:47 Uhr

Packe mal den Aufruf in das Shown-Event der Form.

01.03.2016 - 17:12 Uhr

Mit dem P/Invoke Interop Assistant erstellt:


public partial class NativeMethods {
    
    /// Return Type: unsigned int
    ///sourceData: unsigned char*
    ///sourceLength: unsigned int
    ///destData: unsigned char*
    ///destLength: unsigned int
    [System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="Compress")]
public static extern  uint Compress(System.IntPtr sourceData, uint sourceLength, System.IntPtr destData, uint destLength) ;

}

Bei "<Unknown>" mußt du dann noch den DLL-Namen eintragen (und diese muß dann im Suchpfad liegen - möglichst direkt neben der EXE).

Und mittels der Marshal-Klasse kannst du dann die Daten übertragen. Such dir am besten ein Tutorial zum Marshallen.

16.02.2016 - 16:47 Uhr

Reicht dir einfach ein 3D Chart, wie z.B. 3D Point Chart?
Kannst du wohl auch mit Excel erstellen: 3D scatter plot for MS Excel oder 5dchart.

10.02.2016 - 13:25 Uhr

Wenn sich alles so einfach lösen liesse 😁

10.02.2016 - 11:42 Uhr

Probiere mal im Konstruktor


DataContext = this;

09.02.2016 - 15:55 Uhr

Du könntest auch einfach die Main Form disablen.

05.02.2016 - 12:20 Uhr

Dann trage doch mal AutoScaleMode.Dpi ein (Handling DPI scaling in your .NET application’s forms).

Oder möchtest du gar keine Größenveränderung? Dann natürlich AutoScaleMode.None.

04.02.2016 - 11:46 Uhr

Mittels der WINAPI-Funktion GetAsyncKeyState läßt sich der Tastenstatus direkt abfragen (ohne Verzögerung).

02.02.2016 - 16:22 Uhr

Packe mal alle Controls auf ein Panel und gib dort eine MinimumSize vor - und entsprechend AutoScroll aktivieren (für Form und/oder Panel).

15.01.2016 - 11:04 Uhr

Ein PictureBox stellt ein Bild dar, d.h. wenn du die Anzeige ändern willst, dann mußt du das Bild beschneiden, nicht die PictureBox.

Hier noch ein anderer Link: How to zoom an image in pictureBox? (ganz unten der funktionierende Code)

14.01.2016 - 16:02 Uhr

Hallo,

du willst also gar nicht die Größe der PictureBox verändern, sondern das enthaltene Bild zoomen, s z.B. Grafik in PictureBox vergrößern

Auf CodeProject gibt es auch eine fertige Komponente dafür: A Zoomable and Scrollable PictureBox

11.12.2015 - 16:47 Uhr

Hi,

lies mal [FAQ] Variablennamen zur Laufzeit zusammensetzen / Dynamisches Erzeugen von Controls durch.

So wie du List<string> verwendest, kannst du auch einfach eine List<Button> erstellen oder aber mittels OfType(typeof(Button)) bzw. mittels [FAQ] Casten aber richtig: () / is / as gezielt nach den Buttons suchen.

04.12.2015 - 09:00 Uhr

Such mal nach FindWindow und EnumWindows (mittels P/Invoke kannst du diese WinAPI-Funktionen von C# aus ansprechen).

Edit: auch Controls (z.B. Buttons) werden von der WinAPI als Windows angesprochen 8)

02.12.2015 - 09:09 Uhr

Nach


string[] lines = File.ReadAllLines("Test.txt");

hast du in lines.Length die Zeilenanzahl stehen und kannst mit einer Schleife über die letzten Zeilen iterieren.

27.11.2015 - 14:54 Uhr

Die Erklärung ist ganz einfach. Während des Gedrückthaltens der Buttons wird die Message-Loop angehalten, so daß auch keine Forms.Timer mehr laufen.
Kann man z.B. auch bei anderen Programmen beobachten (wie den Browsern, wenn man eine Seite öffnet, welche eine Animation bietet).
Der Systemprozess läuft aber weiter und daher auch die Stopwatch.

@Serun: was willst du denn mit der Stopwatch ermitteln?

16.11.2015 - 16:57 Uhr

Übernimm einfach den Source der beiden Klassen ObjectShredder und CustomLINQtoDataSetMethods in dein Projekt und rufe die Methode CopyToDataTable() dann auf - und wunder dich (dass es funktioniert 😄).
LINQ is magic!

16.11.2015 - 13:39 Uhr

Hast du denn die CopyToDataTable-Methode auch übernommen, so wie in How to: Implement CopyToDataTable<T> Where the Generic Type T Is Not a DataRow beschrieben?

30.10.2015 - 14:36 Uhr

Und was bitte soll die Zeile bewirken?

30.10.2015 - 12:33 Uhr

stimmt, das ist noch eleganter 👍

28.10.2015 - 14:54 Uhr

Mein Vorschlag bezog sich darauf, daß die Animation weiterlaufen kann.
Die GUI darf sowieso nicht blockieren, s.a. [FAQ] Warum blockiert mein GUI?

nicky hat schon den richtigen Vorschlag bzgl. eines eigenen Events gemacht.
Am besten also das Window (oder Button o.ä) vor dem Aufruf disablen und dann im Event wieder enablen.

28.10.2015 - 13:31 Uhr

Probiere mal einen asynchronen Aufruf:


showAnimation.Completed += (sender, eventArgs) =>
{
    Task.Run( () =>
              {
                    Process process = new Process();
                    process.StartInfo.FileName = filePath;
                    process.StartInfo.Arguments = "";
                    process.Start();
                    process.WaitForExit();
               }
};

27.10.2015 - 16:59 Uhr

"Desktop\Computer" ist ja auch kein physikalischer Pfad, sondern nur ein virtueller Ordner.
Du benötigst schon den Laufwerksbuchstaben des Geräts: "X:\Internal Storage\DCIM"
Entweder über eine Konfiguration festlegen oder aber mittels DriveInfo.GetDrives() dem User zur Auswahl geben.

14.10.2015 - 12:32 Uhr

Hi,

nimm mal


bindingSource1.DataSource = flatList;

anstatt der Add-Loop.

13.10.2015 - 17:02 Uhr

Hi,

du mußt einfach eine weitere (inner) Loop erstellen:


foreach (TreeNode s1 in sub1)
{
    foreach (TreeNode s2 in s1.Nodes)
    {

    }
}

01.10.2015 - 14:07 Uhr

Mittels Breakpoints und der Watch-View kannst du doch dann überprüfen, wie der Programmablauf ist und ob die Variablen die erwarteten Werte haben.

30.09.2015 - 16:21 Uhr

In [FAQ] Variablennamen zur Laufzeit zusammensetzen / Dynamisches Erzeugen von Controls stehen auch noch zusätzliche Tipps, wie man Controls zur Laufzeit (erzeugt und) anspricht.

28.09.2015 - 17:09 Uhr

Aber wenn es um Geschwindigkeit bei einem Algo geht, dann muss man eben Speicher dafür opfern 😁

28.09.2015 - 16:51 Uhr

Hi,

erstelle dir ein Array mit X Einträgen (entsprechend der kleinsten Wahrscheinlichkeit 1/X) und schreibe dann in einer Schleife für jedes Item den Index (des Items) rein. Dies brauchst du nur einmalig zu machen (sofern sich die Wahrscheinlichkeiten nicht ändern).
Dann einfach per Random(0, X) einen Wert raussuchen und den Item-Index an der Stelle aus dem Array auslesen.

Als Beispiel:


Items:
0: 40%
1: 20%
2: 10%
3: 20%
4: 10%

Kleinste Wert ist 10%, also Array mit 10 Einträgen erstellen:


Array:
0: 0
1: 0
2: 0
3: 0
4: 1
5: 1
6: 2
7: 3
8: 3
9: 4

17.09.2015 - 12:38 Uhr

Hi,

dann lass dir doch im Client-Programm vom Server-Programm die Einstellungen geben.
Wie kommunizierst du denn mit dem Server-Programm?

Aber wieso soll das Client-Programm überhaupt die Datenbankeinstellungen des Servers kennen?
Der Sinn einer Client-Server-Architektur ist doch gerade, daß der Server die Aufgaben für die Clients erledigt (z.B. Datenbankabfragen etc.).

16.09.2015 - 14:34 Uhr

Hi,

lies mal [FAQ] Was bedeutet das @ (=at) vor String-Literalen? Und: Wissenswertes zu Escape-Sequenzen (besonders letzteres)

Und wenn du einen Link erstellt hast, dann muss der Pfad natürlich auf ".lnk" enden 8)

16.09.2015 - 14:30 Uhr

Stimmt, der BGW springt automatisch in den GUI Thread

Aber nicht innerhalb der DoWork Eventmethode, sondern nur in den Events ProgressChanged und RunWorkerCompleted - also der Zugriff auf textBoxUSBLabel.Text ist hier falsch.

@Taipi88: du meinst Closure Variable, oder?

14.09.2015 - 09:45 Uhr

Der übliche Use Case ist doch wohl:


if (x.HasValue) // bzw. (x != null)
{
  int y = x.Value;
}
else
{
  // no value
}

Irgendwie möchte man ja doch an den Wert herankommen, den man dort gesetzt hat. 🤔

04.09.2015 - 15:34 Uhr

Bei Type.GetProperties (bzw. GetProperty etc.) kannst du als Parameter BindingFlags.NonPublic angeben:


Exception e;

var prop = e.GetType().GetProperty("HResult", BindingFlags.NonPublic | BindingFlags.Instance);
int hresult = (int)prop.GetValue();

31.08.2015 - 12:27 Uhr

Ich bin mir nicht sicher, ob und was


... AND (Stadt LIKE '%%')

(bei Eingabe einer leeren Stadt) bei SQL als Ergebnis liefert.
Eventuell müsstest du dynamisch den RowFilter zusammensetzen.

31.08.2015 - 12:16 Uhr

Hi,

das geht ganz einfach mittels DataBinding. Lies dich mal in MVVM (Model View ViewModel) ein.

27.08.2015 - 10:25 Uhr

Du könntest ein (hierarchisches) Dictionary dafür als Model verwenden.

26.08.2015 - 09:03 Uhr

Hi,

wenn du die Debug-Toolbar benutzt (d.h dort den "StepInto (F11)" Button), kannst du dann weiterdebuggen? Evtl. ist dann dein Keyboard-Mapping falsch eingestellt.