Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von rollerfreak2
Thema: Rechts Click auf Button mit MouseClick auswerten
Am im Forum: GUI: Windows-Forms

Hast du es mal mit MouseDown probiert? Und dort kannst du dir ein Flag setzen und merken ob die rechte Maustaste gedrückt wurde, und entsprechend im MouseUp event darauf reagieren.

Thema: Column Width in Listview wärend Laufzeit ändern
Am im Forum: GUI: Windows-Forms

Du gehst damit niemand auf den Geist :-)
Ich geb dir voll und ganz recht, für Tabellendarstellung ist das DGV einfach besser geeignet, das ListView ist zwar leichter zu "handeln", aber das DGV dafür deutlich mächtiger. Nicht zu vergessen die Performance, die beim DGV gegenüber dem ListView auch nicht unerheblich ist.

Thema: atoi pendant in c# - string to int
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das wollt ich auch grad hinzufügen herbivore. Damit ist alles gesagt...

Thema: atoi pendant in c# - string to int
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Doch es geht ohne schleife! Prüfe doch mit Regex auf den Anfang des Strings und dann nur Digits. Das müsste also auch gehen.


public int atoi(string source)
{
    Regex regex = new Regex(@"^([-\d]\d*)");
    Match match = regex.Match(source);
    if (string.IsNullOrEmpty(match.Value))
    {
        throw new ArgumentException("The string does not contain digits.");
    }

    return Int32.Parse(match.Value);
}

[Edit] Hatte das minus vergessen mit zu Parsen.

Thema: Substring vom Kontext abhängig rausschneiden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ja das geht mit Regex.


Regex re = new Regex("(?≤Herbert).*?(?=Stefan)");
re.Replace(soruce, string.empty);

Stichwort positver Lookahead und positiver Lookbehind.

(?≤(regex),(?=(regex), dadurch sucht die Enginge den regex, aber er gehört nicht zum match.

Thema: "Der Zugriff auf das Steuerelement xxxx erfolgte von einem anderen Thread"
Am im Forum: GUI: Windows-Forms

Zitat
am rande: Die textboxen die ich setzen will sind zu diesem zeitpunkt unsichtbar, könnte es damit zu tun haben?

Nein du kannst generell keine Steuerelemente von einen anderen Thread, als den der sie erstellt, hat updaten. Benutze dazu immer ein Delegate. Schau dir auch mal den Thread an, sollte dir helfen.

Thema: [gelöst] TabPage.Close() per Rechtsklick
Am im Forum: GUI: Windows-Forms

Ok, ändere den Titel bitte noch in [gelöst] ab.

Thema: Für NumericUpDown Control eine "digitale" Schrift (Font) vergeben
Am im Forum: GUI: Windows-Forms

Dann musst du wohl selber eine TextBox zeichnen. Das ist ja nicht so schwer. Und dort dann deine Schriftart verwenden.

Thema: [gelöst] TabPage.Close() per Rechtsklick
Am im Forum: GUI: Windows-Forms

Das stimmt, aber da du schreibst ich werde "aber" meine Lösung weiter benutzten, schließe ich daraus das deine Lösung Vorteile hat. Lass uns an diesen Vorteilen teilhaben.

Thema: ListView mit Bildern
Am im Forum: GUI: Windows-Forms

Schau ob das bild richtig gesetzt wird. Am einfachsten du lädst es mal schnell in eine PictureBox und schaust ob es angezeigt wird. Wenn du die ListView im Detailed view anzeigen möchtest, also z.B. mit mehreren Spalten, dann musst du die Bilder selber zeichnen. HAb mal ein kleines Beispiel angehängt.


public class ImageListView : ListView
{
    private ImageList m_imageList;

    public ImageListView()
    {
        this.OwnerDraw = true;
    }

    public ImageList DetailImageList
    {
        get
        {
            return this.m_imageList;
        }
        set 
        {
            this.m_imageList = value;
        }
    }

    protected override void OnDrawItem(DrawListViewItemEventArgs e)
    {
        base.OnDrawItem(e);
    }

    protected override void OnDrawColumnHeader(DrawListViewColumnHeaderEventArgs e)
    {
        base.OnDrawColumnHeader(e);
        e.DrawBackground();
        using (SolidBrush brush = new SolidBrush(this.ForeColor))
        {
            e.Graphics.DrawString(e.Header.Text, this.Font, brush, e.Bounds.Location);
        }
    }

    protected override void OnDrawSubItem(DrawListViewSubItemEventArgs e)
    {
        base.OnDrawSubItem(e);
        e.DrawBackground();
        using (SolidBrush brush = new SolidBrush(this.ForeColor))
        {
            e.Graphics.DrawString(e.SubItem.Text, this.Font, brush,
                e.Bounds.Location.X + this.DetailImageList.Images[0].Width, 
                e.Bounds.Location.Y);
            e.Graphics.DrawImage(this.DetailImageList.Images[0],
                e.Bounds.Location.X,
                e.Bounds.Location.Y);
        }
    }
}


Es wird noch keine Selction und Focus beachtet. Auch müsstest du die SubItem Klasse ableiten und ihr ein ImageIndex verpassen sodass du jeweils das richtige Image zeichnest.

Thema: ListView mit Bildern
Am im Forum: GUI: Windows-Forms

Hallo joschika77,

sorry wenn ich das so sage, aber wer lesen kann ist klar im Vorteil. Guckst du ListView.LargeImageList-Eigenschaft.

This will fix the problem

this.myArticleLv.View = View.LargeIcon;

grüße rollerfreak2

Thema: [gelöst] TabPage.Close() per Rechtsklick
Am im Forum: GUI: Windows-Forms

Zitat
Werde aber meine eigene weiterbenutzen und nur auf "Rectangle rect = this.GetTabRect(i);" zurückgreifen.
Aber du hattest doch gar keine eigene Lösung, wieso dann also weiterbenutzen? Unsere (die von ErfinderDesRades und mir) funktioniert doch einwandfrei, was gibt es daran auszusetzen?

Thema: [gelöst] Koordinaten im Mittelpunkt eines Fensters sollen 0,0 sein, wie?
Am im Forum: GUI: Windows-Forms

Das ist mir schon klar das ein Koordinatensystem wie man es aus dem Matheunterricht kennt in Abzissenrichtung nach oben wächst. Aber wenn man den Mittelpunkt von oben Links in die Mitte verlagert, dann ist es nun mal so wie ich beschrieben habe.

Thema: [gelöst] TabPage.Close() per Rechtsklick
Am im Forum: GUI: Windows-Forms

@ErfinderDesRades

Das ist äquivalent zu meiner Lösung :-)

Thema: [gelöst] Koordinaten im Mittelpunkt eines Fensters sollen 0,0 sein, wie?
Am im Forum: GUI: Windows-Forms

Dann hast du das aber meiner Meinung nach falsch beschrieben. Du hast ein Koordinatensystem das bei 0,0 nach oben wächst. Wenn du aber einen Punkt verschiebst, so wie du das erklärt hast, dann ist der obere linke Punkt im Ordinate sowie Abzisse negativ, oder hab ich da einen Denkfehler drin...

Thema: [gelöst] DateTime-Schleife
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Schau dir mal die Signature der AddDay methode an


DateTime AddDay(int days);

Daher ändert das AddDays an der aufrufenden Instanz rein gar nix. Stattdessen musst du


datumAnfang = datumAnfang.AddDays(j);

Auch den vergleich versteh ich nicht. Daher warum scheirbst du


datumAnfang.ToShortDateString() == datumEnde.ToShortDateString()
Da die Uhrzeit doch keine Rolle spielt ist doch das völlig ausreichend


datumAnfang == datumEnde

Thema: Für NumericUpDown Control eine "digitale" Schrift (Font) vergeben
Am im Forum: GUI: Windows-Forms

Ein Lösung wäre die so ein Teil selber zu bauen. Mit hilfe einer Textbox und einer Scrollbar. Like this


private void InitializeComponent()
{
    this.mainMenu1 = new System.Windows.Forms.MainMenu();
    this.textBox1 = new System.Windows.Forms.TextBox();
    this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
    // 
    // textBox1
    // 
    this.textBox1.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular);
    this.textBox1.Location = new System.Drawing.Point(32, 40);
    this.textBox1.Size = new System.Drawing.Size(128, 44);
    this.textBox1.Text = "textBox1";
    // 
    // vScrollBar1
    // 
    this.vScrollBar1.Location = new System.Drawing.Point(160, 40);
    this.vScrollBar1.Maximum = 91;
    this.vScrollBar1.Size = new System.Drawing.Size(32, 36);
    this.vScrollBar1.ValueChanged += new System.EventHandler(this.vScrollBar1_ValueChanged);
    // 
    // Form1
    // 
    this.Controls.Add(this.vScrollBar1);
    this.Controls.Add(this.textBox1);
    this.Menu = this.mainMenu1;
    this.Text = "Form1";

}

private void vScrollBar1_ValueChanged(object sender, System.EventArgs e)
{
    this.textBox1.Text = this.vScrollBar1.Value.ToString();
}

Thema: Für NumericUpDown Control eine "digitale" Schrift (Font) vergeben
Am im Forum: GUI: Windows-Forms

Poste mal den Code für das Label.

[edit] steht ja schon oben, sry

Thema: [gelöst] Koordinaten im Mittelpunkt eines Fensters sollen 0,0 sein, wie?
Am im Forum: GUI: Windows-Forms

@Trekki1990

Was willst du mir damit sagen?

Also Obere linke eckte muss doch doppelt negativ sein, -512, -384 oder seh ich da was falsch?

Thema: [gelöst] Koordinaten im Mittelpunkt eines Fensters sollen 0,0 sein, wie?
Am im Forum: GUI: Windows-Forms

Das umrechnen ist doch nicht schwer! Ein paar Mathe Grundrechenarten und fertig.

Daher wenn du ein Punkt hast Bsp. (30, 40) und du willst den (0,0) Punkt in den Mittelpunkt schieben und wissen wo der (30, 40) jetzt liegt musst du doch nur


Point p = new Point(30 - this.Width / 2, 40 - this.Heigth / 2);

schreiben. War das wirklich so schwer oder hab ich dich einfach nur falsch verstanden?

Thema: Für NumericUpDown Control eine "digitale" Schrift (Font) vergeben
Am im Forum: GUI: Windows-Forms

Das beantwortet meine Frage nicht. Was passiert wenn du den Font des NumericUpDown Controls auf den von dir gewünschten setzt? Das es beim Label klappt spielt hierbei keine Rolle, ich möcht wissen was passiert wenn du es beim NUD Control äquivalent implementierst.

Thema: [gelöst] TabPage.Close() per Rechtsklick
Am im Forum: GUI: Windows-Forms

Hallo bonzy,

ich hab dir mal ne Lösung gepostet, die ist meines Erachtens nach gar nicht schwer ist daher leicht zu verstehen ist. Du hängst dich an das MouseClick Event und schaust welcher Button geclickt wurde. Danach überprüfst du ob der User ein TabPage (Reiter) gekickt hat. Ist dies der Fall dann öffnest du ein ContextMenu wobei du die Tabpage gleich mit an die TagProperty hängst. Danach musst du im OnClick des MenuItems nur noch die Tabpage removen. Und fertig!


public class ClickableTabControl : TabControl
{
    /// <summary>
    /// Raises the <see cref="E:System.Windows.Forms.Control.MouseClick"/> event.
    /// </summary>
    /// <param name="e">An <see cref="T:System.Windows.Forms.MouseEventArgs"/> that contains the event data.</param>
    protected override void OnMouseClick(MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            for (int i = 0; i < this.TabCount; i++)
            {
                if (TabPageClicked(e.Location, i))
                {
                    ContextMenu menu = new ContextMenu();
                    MenuItem item = new MenuItem("Close", new EventHandler(CloseClick));
                    item.Tag = this.TabPages[i];
                    menu.MenuItems.Add(item);
                    menu.Show(this, e.Location);
                }
            }
        }
        base.OnMouseClick(e);
    }

    /// <summary>
    /// Closes the tabpage the user specified.
    /// </summary>
    /// <param name="sender">The sender.</param>
    /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
    private void CloseClick(object sender, EventArgs e)
    {
        MenuItem item = sender as MenuItem;
        if (item != null)
        {
            TabPage page = item.Tag as TabPage;
            if (page != null)
            {
                this.TabPages.Remove(page);
            }
        }
    }

    /// <summary>
    /// Return true if the tabpage which with the given index was clicked.
    /// </summary>
    /// <param name="point">The point.</param>
    /// <param name="i">The i.</param>
    /// <returns></returns>
    private bool TabPageClicked(Point point, int i)
    {
        Rectangle rect = this.GetTabRect(i);
        
        return rect.Contains(point);
    }
}

Thema: per Code erzeugte Checkboxen und GroupBox
Am im Forum: GUI: Windows-Forms

Dein Problem kann ich nicht nachvollziehen. Man kann auf jeden Fall Controls per Designer hinzufügen und im nachhinein Controls per Code. Man darf dies nur nicht im Designer Code tun.

Und wenn du wie Herbivore bereits gesagt hat die Controls auch in die Groupbox einfügst dann sind die auch relativ zu Groupbox.


public Form1()
{
        InitializeComponent();
        InitializeControls();
}

public void InitializeControls()
{
    //here you can add what ever you want
}

public void InitializeComponent()
{
    //but not here
    ....
}

Thema: [gelöst] ListView Column Header not sizeable
Am im Forum: GUI: Windows-Forms

Das stimmt nicht ganz! Und zwar ist das OnColumnWidthChanging Event dafür da mitzubekommen wenn der User dabei ist die Breite zu ändern. Daher wenn du dort

e.Cancel = true;
schreibst, dann wird einfach nur nicht die neue breite gezeichnet. Wenn du nun noch das OnColumnWidthChanged Event abfängst kannst du dort einfach die Breite zurück setzen.


foreach (ColumnHeader column in listView.Columns)
{
    column.Tag = column.Width;
}


void listViewColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e)
{
    listView.Columns[e.ColumnIndex].Width = (int)listView.Columns[e.ColumnIndex].Tag;
}

void listViewColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
{
    e.Cancel = true;
}


So funktioniert es und ich find es sauberer, weil du nur dann die breite neu setzt wenn der User die Maus los lässt.

Thema: [gelöst] ListView Column Header not sizeable
Am im Forum: GUI: Windows-Forms

So find ich es akzeptabel. Ich fand nur die Lösung mit der MessageBox komisch. Jedesmal wenn der USer die Column Resizen will blobt eine MessageBox auf. In wie weit die Zeile

e.NewWidth = pingListView.Columns[e.ColumnIndex].Width;
nötig ist weiß ich nicht, weil doch eigentlich das e.cancel den Changing vorgang unterbindet.

Thema: Daten auslesen und in Tabelle (Maske) ausgeben
Am im Forum: GUI: Windows-Forms

Also mir kommt es vor als ob dir die Grundlagen fehlen. Du weist anscheinend nicht wie man mit Datenbanken umgeht, bzw was ein DataSet und Co. ist.
Dabei hat dir juetho alle nötigen Informationen gegeben. Die ignorierst du aber und versuchst die Arbeit auf uns abzuwelzen.

Wir helfen dir gern, aber du musst 1tens selber was dafür tun, und 2tens KONKRETE Fragen stellen, und nicht

Zitat
aber ich weiß einfach nicht wie ich das programmieren muss

Thema: Für NumericUpDown Control eine "digitale" Schrift (Font) vergeben
Am im Forum: GUI: Windows-Forms

Noch mal kurz zu dem UseCompatibleTextRendering, das heißt wenn du den Font einach setzt mit


this.Font = new Font(...);

würd die neue Schrift nicht dargestellt weil zum Darstellen dieser Schrift dieses UseCompatibleTextRendering benötigt wird?

Thema: [gelöst] ListView Column Header not sizeable
Am im Forum: GUI: Windows-Forms

Zitat
damit der Anwender sie nicht mehr verschieben kann

Gelöst würde ich das zwar nicht nennen aber so wird es auch verhindert. Nur schön finde ich das nicht.

Thema: Für NumericUpDown Control eine "digitale" Schrift (Font) vergeben
Am im Forum: GUI: Windows-Forms

Ich würde das Control ableiten und selber umbauen, also z.B. das OnPaint überschreiben. Dort kannst du dann selber die Zahlen zeichnen und die Digitale Schrift einsetzten.

Thema: Hilfe bei einem Programm, das Laufwerkmappings verwalten können soll
Am im Forum: Rund um die Programmierung

Den Anfang habe ich dir doch schon gegeben. Die DB solltest du zuerst überdenken. Und dann selber mal bisschen was suchen....