NumericUpDown mit Einheit?



  • Hallo,

    kann man innerhalb eines NumericUpDown hinter der Zahl auch eine Einheit anzeigen, z.B. "1.23 mm" ?

    Gruß
    Michael



  • Du kannst die UpdateEditText Methode überschreiben.



  • Hallo,

    Mechanics schrieb:

    Du kannst die UpdateEditText Methode überschreiben.

    danke, das werde ich gleich ausprobieren. Zuerst muss ich aber erst noch ein anderes Problem lösen, denn das IntelliSense geht plötzlich nicht mehr richtig.

    Ich wollte das Projekt im gegenwärtigen Zustand belassen und mit einem neuen Projekt weiterarbeiten. Also habe ich ein neues Projekt angelegt, dann alle relevanten Dateien aus einem alten Projekt in das neue Projekt kopiert, dann in allen Dateien die Namespaces geändert. Die neue Anwendung läuft zwar, aber das IntelliSense zeigt mir nicht die Objekte an. Was kann dagegen tun?

    Also das ist für mich ein grundsätzliches Problem:
    Wie sichert man bei VS2008 ein Projekt, so dass man im Zweifelsfall wieder zum alten Zustand zurückgehen kann? Ich weiss dass es dafür spezielle Software zur Projektverwaltung gibt, aber das muss doch auch ohne spezielle Software gehen.

    Gruß
    Michael



  • micha7 schrieb:

    Wie sichert man bei VS2008 ein Projekt, so dass man im Zweifelsfall wieder zum alten Zustand zurückgehen kann? Ich weiss dass es dafür spezielle Software zur Projektverwaltung gibt, aber das muss doch auch ohne spezielle Software gehen.

    Nein, nimm eine Versionsverwaltung wie Subversion, alles andere macht keinen Sinn. Das wirst du später im Studium oder Beruf sowieso brauchen, besser gleich damit anfangen.

    Wenn die Intellisense nicht geht, machst du was falsch 😉 Die C# Intellisense ist im Gegensatz zu der von C++ sehr stabil, mir sind in den ganzen Jahren noch keine größeren Probleme aufgefallen.



  • Mechanics schrieb:

    Nein, nimm eine Versionsverwaltung wie Subversion, alles andere macht keinen Sinn.

    Also das Rüberkopieren der Dateien von einem Projekt in ein anderes Projekt war jedenfalls keine gute Idee, das ist mir inzwischen klar. Aber mal eine andere Idee: Wenn ich eine Kopie des kompletten Projektordners anlege, dann könnte ich doch mit dem ursprünglichen Projekt weiterarbeiten, und falls ich irgendwann wieder zurück will, dann könnte ich den alten Zustand wieder herstellen. Spricht da irgendwas dagegen?

    Gruß
    Michael



  • Ich mache das dauernd so.

    Und immer mal wieder will ich eine Versionsverwaltung aufsetzen, komme aber nicht dazu. Machs also lieber von Anfang an.



  • Hallo,

    Mechanics schrieb:

    Du kannst die UpdateEditText Methode überschreiben.

    Zurück zum ursprünglichen Problem. Ich habe das ausprobiert und die Einheit wird auch wie gewünscht angezeigt, aber jetzt habe ich das Problem dass der Forms Designer nicht mehr angezeigt wird. Allein das Überschreiben der UpdateEditText Methode scheint schon zu bewirken, dass der Forms Designer nicht mehr angezeigt wird. Wenn ich die neue Klasse auskommentiere, dann ist der Designer wieder da. Wie kann man das verhindern?

    Gruß
    Michael

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    public class NumericUpDownUnit : NumericUpDown
    {
        public NumericUpDownUnit()
        {
        }
    
        protected override void UpdateEditText()
        {
            this.Text = this.Value.ToString() + " %";
        }
    }
    
    namespace Test_NumeriUpDown_mit_Einheit
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
        }
    }
    


  • Hallo,

    habe das Problem gelöst. Form1 muss die erste Klasse in der Datei sein. Wenn ich die neue Klasse weiter unten hinschreibe, dann geht es.

    Gruß
    Michael



  • Hallo,

    aktuell sieht das Beispiel so aus:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Test_NumericUpDown_mit_Einheit
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                numericUpDown1.setUnit(" mm");
            }
    
        }
    }
    
    public class NumericUpDownWithUnit : NumericUpDown
    {
        private String unit;
    
        public NumericUpDownWithUnit()
        {
        }
    
        public void setUnit(String unit)
        {
            this.unit = unit;
            this.UpdateEditText();
        }
    
        protected override void UpdateEditText()
        {
            this.Text = this.Value.ToString() + this.unit;
        }
    }
    

    Damit das läuft, muss ich in der Datei "Form1.Designer.cs" an zwei Stellen "NumericUpDown" durch "NumericUpDownWithUnit" ersetzen. Ich muss also in dem Code herumändern, den der Designer erzeugt hat. Könnte man das umgehen, indem man der neuen Klasse den gleichen Namen wie der alten Klasse gibt? Das habe ich noch nicht hingekriegt.

    Gruß
    Michael



  • Eigene Controls erscheinen in der Toolbox. Evtl. erst nach Aktualisierung.



  • Du kannst noch unter Extras Toolbox Elemente auswählen oder so die Elemente für die Toolbox auswählen. Aber wenn das Control in der selben Solution ist, sollte ers irgendwann selber finden...



  • Hallo,

    Mechanics schrieb:

    Du kannst noch unter Extras Toolbox Elemente auswählen oder so die Elemente für die Toolbox auswählen. Aber wenn das Control in der selben Solution ist, sollte ers irgendwann selber finden...

    Ich habe da vorhin schon eine ganze Weile nach gesucht, aber nichts gefunden. Das neue Control steht definitiv nicht in der Toolbox drin, und ich habe auch noch keinen Weg gefunden es da reinzubringen.

    Gruß
    Michael



  • Naja, das wird ja sicher in einer Assembly drin sein. Und unter "Toolboxelemente auswählen" kannst du eine Assembly laden, also zumindest über den Weg kriegst es sicher rein.
    Hast du wirklich mehrere Klassen in einer Datei? Geht das überhaupt in C#? Ich hab sowas noch nie probiert...



  • Hallo,

    Mechanics schrieb:

    Naja, das wird ja sicher in einer Assembly drin sein. Und unter "Toolboxelemente auswählen"

    Finde ich nicht, wo soll denn das sein?

    Mechanics schrieb:

    kannst du eine Assembly laden, also zumindest über den Weg kriegst es sicher rein.
    Hast du wirklich mehrere Klassen in einer Datei? Geht das überhaupt in C#? Ich hab sowas noch nie probiert...

    Ich weiss, normalerweise ist es übersichtlicher für jede Klasse eine neue Datei anzulegen. Aber in diesem kleinen Beispiel geht auch so.

    Gruß
    Michael



  • Mechanics schrieb:

    icha7"[quote="Mechanics"]Naja, das wird ja sicher in einer Assembly drin sein. Und unter "Toolboxelemente auswählen"

    Finde ich nicht, wo soll denn das sein?

    Unter Extras. Es sei denn, du hast eine Express Edition und da fehlt das, das weiß ich nicht, habe keine Express.



  • Hallo,

    Mechanics schrieb:

    Unter Extras. Es sei denn, du hast eine Express Edition und da fehlt das, das weiß ich nicht, habe keine Express.

    Ich habe die VS2008 Standard Edition. Den Menüpunkt "Extras" gibt es da nicht. Es gibt "Tools / Choose Toolbox Items...", aber dort habe ich mein eigenes Control nirgendwo gefunden.

    Gruß
    Michael



  • Ja, dann ist es halt auf Englisch, ist schon der richtige Punkt. Da kannst eine Assembly hinzufügen und die Controls daraus auswählen. Wenn dus nicht findest, such nach Screenshots oder lies eine Doku 😉


Anmelden zum Antworten