Laden...
Avatar #avatar-3234.gif
JunkyXL myCSharp.de - Experte
Software Developer Ein paar Bytes südlich von string Dabei seit 02.05.2006 1.665 Beiträge
Benutzerbeschreibung
Code-Junky

Forenbeiträge von JunkyXL Ingesamt 1.665 Beiträge

17.06.2009 - 22:58 Uhr

Solange du vor dem Auslösen des Events keinen Thread durch einen System.Threading.Thread oder einen Threading-Timer erzeugst, kann da auch nichts durcheinander kommen, das heißt, nichts parallel ausgeführt werden.

16.06.2009 - 15:59 Uhr

Aber nur weil ich gerade nichts besseres zu tun habe..
Eigentlich solltest du das Grundverständnis mitbringen.

16.06.2009 - 15:27 Uhr

Ist das deine Hausaufgabe für Religion/Sozialkunde o. ä.? 😉

16.06.2009 - 15:18 Uhr

Erstell dir eine Klasse 'XYButton'
Diese beinhaltet Properties wie z.B. Text, BackColor und vor allem Bounds (System.Drawing.Rectangle).

Anhand der Werte in den Properties zeichnest du den Button und speicherst die Position und Größe in dem Bounds-Property.

Später kannst du dann nämlich bei MouseMove und MouseClick die Bounds auf eine Mausposition prüfen und so die Button-Funktionalität implementieren.

Edit:
ich würde nicht

new Font("Arial", 8, FontStyle.Bold)

schreiben, sondern

new Font(this.button.Font.FontFamily.Name, 8, FontStyle.Bold)
16.06.2009 - 13:59 Uhr

Wenn du dich einmal mit dem Thema auseinandersetzt, ist es ein Kinderspiel. Gerade wie in deiner Anforderung.

Wo hakts denn?

16.06.2009 - 13:40 Uhr

Bei mir flackert das Bild öfters.

@LatinChriz:
SetStyle(...);

...und die Taste für das sofortige absetzen (Leertaste oder?).

Eher 'Nach unten', außerdem -> konfigurierbar.

Aber ehrlich gesagt find dich die Datei viel zu groß. hab mitm Reflector geschaut und du hast ja die Steine als Bitmap Resourcen drin wenn ich das richtig gesehen hab oder? Das bläht das ganze Programm natürlich auf.

@LatinChriz: Die Steine hättest du ja jetzt auch noch selbst zeichnen können.. 😉

16.06.2009 - 13:28 Uhr

In so einem simplen Fall bevorzuge ich das Erstellen und Zeichnen eines komplett eigenen Controls, was gegenüber einem UserControl mit 2 Labels + 1 Button bei einer großen Anzahl einen deutlichen Performanceunterschied ausmacht.

16.06.2009 - 13:07 Uhr

Dann registrier doch das SizeChanged Event erst bei OnLoad des UserControls.

Ich denke, du machst das auch etwas zu kompliziert, falls ich dich richtig verstehe?!
Warum gibst du nicht jeder Spalte in deinem Control die Breite Control.Width / 8 ?

16.06.2009 - 10:11 Uhr

Ja, ist echt praktisch.
Ist es Absicht, dass - egal wo der zu editierende Beitrag steht - dennoch "nur" die 10 aktuellsten Posts angezeigt werden?
Wäre es nicht sinnvoller, die folgenden 10 Posts AB diesem Beitrag anzuzeigen?

16.06.2009 - 09:55 Uhr

Wenn du weißt, dass es sich nur um Controls handelt, machst du das eben so:

Control control = null;

if ()
{
    control = new RadioButton();
}
else if ()
{
    control = new ...
}
...

Wovor hast du denn dabei Angst?

15.06.2009 - 11:45 Uhr

Aber mal ehrlich, ich hätte ja dann wenigstens eine hauchdünne Linie oder irgendwas erwartet.

Das liegt daran, dass das Control dann keine DefaultSize festgelegt hat.
Wenn du z.B. einen Button oder eine ListView instanziierst, haben diese jeweils eine unterschiedliche Anfangs(Standard)größe, aus gutem Grund.

PS: Hab gerade nochmal zum Versuch bei der Windows-ProgressBar die Properties für Height und Width auf '0' gestellt, dann ist von dieser auch nichts mehr zu sehen.... 🤔

was ist daran 🤔? Ist doch logisch...

04.06.2009 - 12:58 Uhr

Höchstwahrscheinlich geht das nur über einen Message-Filter (IMessageFilter).

public bool PreFilterMessage(ref Message m)
{
    int WM_MOUSEWHEEL = 522;
    if (m.Msg == WM_MOUSEWHEEL)
    {
        // Mouse Wheel Message an das entsprechend Control senden
        SendMessage(*...*, m);
    }
}
28.05.2009 - 12:00 Uhr

Um den as Operator bei Generika zu verwenden, reicht es aus, ein where : class
anzuhängen.
Eine Klasse ist immer ein Referenz-Typ und deswegen kann dann auch der Operator benutzt werden.

public void<T> Test() where T : class
27.05.2009 - 12:12 Uhr

Ja.
So lassen wie es ist 😃

Wozu brauchst du das genau?

25.05.2009 - 17:02 Uhr

Du verwendest aber schon die Infragistics Controls, auf die sich das nur auswirkt?

22.05.2009 - 16:03 Uhr

Damit keine Verwirrung entsteht:
Nicht SelectIndex, sondern SelectedIndices/SelectedItems.Count.
Diesen Wert prüfst du auf == 1 bzw. weist das Ergebnis des Vergleiches direkt der Enabled-Eigenschaft zu ohne ein unnötigens if-else Konstrukt zu erbauen.

22.05.2009 - 12:55 Uhr

Das "Problem" ist, dass das Enter noch an KeyPress geschickt, was wohl letztendlich erst den Beep verursacht. Dann ist ja also klar, was zu tun ist.

Das Beep soll ja nur verdeutlichen, dass Enter ein ungültiges Zeichen ist, dass in einer Multiline = false TextBox nicht rein kann.
Und wenn, wie erwähnt, AcceptButton gesetzt ist, entfällt das Problem sowieso.

Also wieso das Beep unterdrücken, wenn sonst nichts mit der Enter-Taste gemacht wird?

20.05.2009 - 11:30 Uhr

Naja, wozu das Auto umparken, damit es keiner sieht, wenn man es auch mit einem Tuch verdecken kann? 😉

Visible reicht nun mal aus. Möglicherweise ist es auch schneller als das Control zu entfernen und wieder hinzuzufügen.

20.05.2009 - 10:25 Uhr

Letztendlich ist es egal, ob du die UserControls schon vorher erzeugt hast, indem du sie per Toolbox auf die Form gezogen hast oder ob du sie zur Laufzeit je nach Auswahl erst instanziierst.

Egal ist es nicht mehr, wenn die UCs lange zum Laden brauchen. Da wäre eher die Überlegung diese erst zur Laufzeit zu erzeugen, um unnötige Ladezeit zu verhindern, für UCs die wohl nie angewählt werden.

Edit:
Wenn die UCs instanziiert sind, würde ich sie nicht mehr mit Remove() aus dem Container entfernen, sondern lediglich Visible = true/false verwenden.

20.05.2009 - 09:15 Uhr

Das musst du doch selbst wissen, wie es vorgesehen sein soll.
Ich finde es ganz normal, wenn geänderter Inhalt erhalten bleibt.
Dein Code bleibt ja auch noch bestehen, wenn du in VS zwischen verschiedenen Tabs wechselst 😉

19.05.2009 - 12:10 Uhr

Beschränk dich einfach nur auf protected virtual OnDispose(EventArgs) des Forms.
Kein GC.Collect(), nicht einmal unbedingt Form.Dispose().

15.05.2009 - 15:00 Uhr

Das einzige was mir bisher immer negativ aufgestossen ist, wäre das die Oberflächen unter XP / Vista / W7 etwas anders aussehen, weil z.B. unter Vista ein String bestimmter länge in eine Textbox passt und unter XP wird diese kleiner dargestellt und der string wird abgeschnitten.

Noch eine Bemerkung dazu:
Damit sollte man sowieso immer rechnen. Das UI Theme des jeweiligen Windows ist fast uninteressant. Viel wichtiger sind die Benuztereinstellungen. Allein schon die visuelle Anpassung des Desktops für Sehbehinderte, -eingeschränkte.

Jeder kann eine beliebige Schriftart, Schriftgröße, Farben, ... für Dialoge einstellen. Schon lange 😃

15.05.2009 - 14:48 Uhr

Mit Application Service meine ich einfach nur eine Klasse, die Kontext-bezogene Aufgaben in der Anwendung durchführt.

Zum Beispiel:
LogService (schreibt z.B. Exceptions und andere Meldungen weg (Datei, Eventlog, Datenbank, ...)),
MainWindowService (tätigt Aufgaben wie z.B. Statusmeldungen über das NotifyIcon ausgeben)

public static class ServiceProvider
{
    static ServiceProvider()
    {
        services.Add(..., ...);
    }
    private Dictionary<Type, object> services;    
    public static object GetService(Type serviceType);
}

Und über diese Klasse holst du dir den gewünschten Service und führst die Aufgaben durch. Sauber getrennt und vor allem verhinderst du dadurch redundanten Code.
Kein Hexenwerk.

15.05.2009 - 13:57 Uhr

Fehlermeldung krieg ich keine!!!!!

ist übrigens auch nicht zu glauben.

-->

try // Überprüfen ob Verbindung aufgebaut werden kann
{
    OleDbConnection con = new OleDbConnection(strCon);
    con.Open();
    con.Close();
    return (0);
}
// hier steht mit Sicherheit so etwas:
catch (Exception ex)
{
    EatException(ex);
}

private void EatException()
{
    Debug.WriteLine("ham ham ham ham ham");
}

und drumherum wohl: (while 1 == 4 - 3)

nicht aufregen ujr, nimms mit Humor 😉

15.05.2009 - 13:48 Uhr

Ich würde das NotifyIcon nicht direkt in der gesamten Anwendung verfügbar machen..
Höchstens über ein Interface mit einer Methode GetNotifyIcon() auf der MainForm der Anwendung, die dieses Interface implementiert (z.B. IMainForm).

Besser wäre so etwas wie ein Application Service, der eine Methode SetNotification(string) hat und sich intern darum kümmert. So einen Application Service kannst du dann statisch in deiner Anwendung verfügbar machen.

15.05.2009 - 08:54 Uhr

Schon lustig, genau das hatte ich vor 2 Tagen selbst gesucht..
Auch Microsoft empfiehlt diese Lösung, wie die auf der genannten Seite von Kuehner.

Allerdings ist eine Einschränkung mittels TOP X im inner select durchaus sinnvoll, gerade bei größeren Datenmengen:

SELECT FirstName, LastName
FROM
    (SELECT TOP 20 ROW_NUMBER() OVER (ORDER BY PersonID DESC) AS Row, FirstName, LastName
FROM Persons) as AS PersonsWithRowNumbers
WHERE  Row >= 11 AND Row <= 20

von Row 50 bis 1337 müsstest du dann im inner select SELECT TOP 1337 schreiben.

14.05.2009 - 12:31 Uhr

private Dictionary<String, Condition> conditionMap;

-->

private Dictionary<String, ConditionList> conditionMap;

Edit:
ToList() ist eine ExtensionMethod auf IEnumerable<T>
Da Dictionary<,>.Values ein IEnumerable ist, bekommst du diese Methode angeboten.
Das hat aber nichts damit zu tun, dass das Value an sich zu einer Liste wird.

14.05.2009 - 12:29 Uhr

Was ist jetzt genau dein Problem?
Ich versteh dein Problem nur ungenau. Was spricht dagegen, beim ersten Mal nur den 1. Parameter zu befüllen und beim zweiten Mal die restlichen 2?

14.05.2009 - 12:03 Uhr

Entweder du beendest den Thread manuell beim OnClosed der MainForm oder du beendest den Thread bei OnDispose() des UserControls. Wobei ich mir jetzt nicht sicher, ob das noch beim Beenden der Anwendung aufgerufen wird.
Falls nicht, kannst du noch auf das Application.ApplicationExit-Event reagieren.

12.05.2009 - 14:52 Uhr

Musst du selbst errechnen (ListViewItem.Bounds). Wozu brauchst du die denn?

08.05.2009 - 10:34 Uhr

Soweit ich bislang weiß, ermittelt 7 die Systemvoraussetzungen, die das Programm hergibt und entscheidet entsprechend. Das dürfte bei Microsoft-Software noch ganz gut funktionieren, wie es sich mit anderer Software verhält, ist mir noch unklar.

Edit:

Hm .... hat evtl jemand den RC installiert und weiß, wie das genau funktioniert? Daheim, ja 😃 Hab es aber noch nicht ausgiebig ausprobiert.

Edit2:
http://windowslive.com/Connect/Post/F5CF78DEA3328162-212158
Evtl. die passende Antwort dabei.

04.05.2009 - 12:57 Uhr
<p><%= Resources.period.Text %></p>
  1. Post:
<asp:Label ID="filterLbl" runat="server" Text="<%$ Resources:zeitraum.Text %>"></asp:Label>

Da hast du ein $ benutzt, und jetzt ein =

29.04.2009 - 08:32 Uhr

ContextMenuStrip.ShowImageMargin

28.04.2009 - 14:47 Uhr

Also, wäre es ein Compilerfehler, würde ich dir [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen) raten 😉

Schau doch einfach nochmal genauer nach, wie die Syntax dazu lautet, um den Befehl auszuführen. Da scheint ein Fehler drin zu sein.

28.04.2009 - 14:33 Uhr

Die Fehlermeldung sieht doch relativ klar aus.
Du hast aber schon das "Pfad" rausgenommen und einen gültigen absoluten Dateipfad an die Stelle gesetzt?

Jetzt wo ich nochmal drüberschau.. "Pfad"/AsamD3.idl --> "Pfad"++++AsamD3.idl

28.04.2009 - 10:15 Uhr

Eigentlich gehört diese Zeile genau in den ctor.
Wie ist das Verhalten wenn du die Zeile komplett weg lässt?

24.04.2009 - 14:25 Uhr

Muss es für diesen speziellen Fall ein ToolTip sein?
Reagiere doch auf alle fraglichen Controls mittels Enter und Leave und platziere in der Nähe des Controls dieses "ToolTip" Control welches du selbst erstellst. Dadurch hast du auch viel mehr Möglichkeiten.

24.04.2009 - 13:30 Uhr

Tob dich doch besser auf den Seiten der großen Komponentenhersteller aus.
Dort findest du sicherlich genug, was deinen Vorstellungen und deinem Geschmack entspricht.

www.infragistics.com
www.devexpress.com
www.componentone.com
www.telerik.com

www.codeproject.com
www.google.de 😃

23.04.2009 - 20:32 Uhr

Bei Transparenz bist du aufgeschmissen. Da passiert nämlich etwas mehr beim Zeichnen, was das Flackern verursachen könnte. Nimm mal deswegen Opaque aus den ControlStyles raus.

23.04.2009 - 16:36 Uhr

Hab jetzt nicht genau geschaut, ob es das gleiche ist:
http://www.doogal.co.uk/clip.php

Ansonsten könnte dir die Suche nach Clipboard Viewer C# etwas weiterhelfen. Da kamen einige Links raus, die dir bestimmt irgendwie weiterhelfen.

23.04.2009 - 16:00 Uhr

Hast du dich nach einer Alternative bereits umgeschaut?
Ich könnte mir durchaus vorstellen, dass das auch über einen anderen Weg geht.

23.04.2009 - 14:51 Uhr

Überschreib in deiner Button-Klasse IsInputKey() und gib bei den gewünschten Tasten :::

22.04.2009 - 23:55 Uhr

Ungetestet, aber so ungefähr wird das Graphics Objekt von "unten" erzeugt:

case WM_PAINT:
    Graphics g = Graphics.FromHdc(Message.WParam);
    g. ...

ob es WParam ist, weiß ich nicht 100%

22.04.2009 - 15:38 Uhr

Entweder:

// Von irgendwo
this.button.KeyDown += new KeyEventHandler(button_KeyDown);

private void button_KeyDown(object sender, KeyEventArgs e)
{
    e.Handled = true;
}

oder

// In einer abgeleiteten Button-Klasse
public class MyButton : Button
{
    // Überschreiben
    protected override void OnKeyDown(KeyEventArgs e)
    {
         base.OnKeyDown(e);

         e.Handled = true;
    }
}

Das sind aber Grundlagen. Das war jetzt Hilfe genug.

22.04.2009 - 12:46 Uhr

ich setzt den fokus beim button-onclick einfach wieder aufs textfeld 😃

Auch eine Möglichkeit.

PS:

if (!button.Focused)
{
    button.Enabled = false;
}

--->

button.Enabled = button.Focused;

Nur mal so aus Langeweile 😉

22.04.2009 - 12:36 Uhr

😉

Du musst dann aber im Umkehrschluss auch das Leave/LostFocus-Event des Buttons verwenden. Weil sobald der aktiv ist, bekommt ja TextBox-Leave nix mehr mit.

22.04.2009 - 12:26 Uhr

Versuch mal im Leave-Event der TextBox auf Button.Focused zu prüfen.

21.04.2009 - 10:59 Uhr

Was heißt "nicht erkannt"? Was meinst du mit Befehlsliste?
Heißt die Klasse auch tatsächlich Form3 oder heißt nur die Datei so?

20.04.2009 - 08:49 Uhr

rufe die CreateGraphics()-Methode des entsprechenden Controls auf, auf dem zu zeichnen willst. Dann kannst du das zurückgegebene Graphics-Objekt benutzen, um direkt darauf zu zeichnen.

Kannst du verraten, woher du diese Empfehlung hast?
Wir versuchen hier genau immer das Gegenteil zu erzählen, weil Beiträge wie diese ernst genommen werden.

18.04.2009 - 22:23 Uhr

Also ich weiß nicht warum das so sein sollte.. Ohne das jetzt explizit zu testen, widersprech ich dir da einfach.. Hast du evtl. noch anderen Code außenrum, der aufgrund irgendwelcher Bedingungen das Verhalten verursacht?
Normalerweise ist das Idiotensicher (ich sage nicht, dass du einer bist 😉)

Eigentlich sollte es keinen Unterschied machen, aber ich verwende immer SelectedItems anstatt Indices. Probier das mal damit.