Frage selbsterstelltes Steuerelement

RamDav

Grünschnabel
Hi ,

Ich hab mir in C# selber ein kleines Steuerelemnt zusammengebastelt dass ich für ein Projekt benötige ist so ne Art virtuelle 7 Segment Anzeige(siehe Anhang)
Das Problem ist das alle Member und Methoden der Basisklasse UserControl in Anwendungen verfügbar sind die das Steuerelement einbinden.
Wie kann ich dass vermeiden?


Hier mal der Code

Code:
namespace LEDUhr
{
    public partial class LEDUhr : UserControl
    {
        private static Bitmap[] _7segPic=new Bitmap[]
        {
            siebenSegZeichen.seg0,
            siebenSegZeichen.seg1,
            siebenSegZeichen.seg2,
            siebenSegZeichen.seg3,
            siebenSegZeichen.seg4,
            siebenSegZeichen.seg5,
            siebenSegZeichen.seg6,
            siebenSegZeichen.seg7,
            siebenSegZeichen.seg8,
            siebenSegZeichen.seg9,
        };
            
        public LEDUhr()
        {
            InitializeComponent();
        }
        public void setDisplay(TimeSpan Time)
        {
            string temp, temp2;
            temp = Time.ToString().Replace('.', ':');
            temp2 = temp.Substring(0, temp.Length - 4);
            setDisplay(temp2, ':');
            
        }

        
        public void setDisplay(string Val,char Trennzeichen)
        {
            string[] tempval = new string[4];
            tempval = Val.Split(":".ToCharArray(), 4, StringSplitOptions.RemoveEmptyEntries);
            tempval[0] = tempval[0] + tempval[1] + tempval[2] + tempval[3];
            setDisplay(tempval[0].ToCharArray());
        }

        public void setDisplay(char[] val)
        {
            pBh1.Image = _7segPic[Convert.ToInt32(val[0]) - 48];
            pBh2.Image = _7segPic[Convert.ToInt32(val[1]) - 48];
            pBm1.Image = _7segPic[Convert.ToInt32(val[2]) - 48];
            pBm2.Image = _7segPic[Convert.ToInt32(val[3]) - 48];
            pBs1.Image = _7segPic[Convert.ToInt32(val[4]) - 48];
            pBs2.Image = _7segPic[Convert.ToInt32(val[5]) - 48];
            pBms1.Image = _7segPic[Convert.ToInt32(val[6]) - 48];
            pBms2.Image = _7segPic[Convert.ToInt32(val[7]) - 48];
            pBms3.Image = _7segPic[Convert.ToInt32(val[8]) - 48];
        }

        private void LEDUhr_Load(object sender, EventArgs e)
        {

        }

        
    }
}
MfG RamDav
 

Anhänge

  • siebenSegAnzeige.JPG
    siebenSegAnzeige.JPG
    5,3 KB · Aufrufe: 17
Hallo RamDav,

da sehe ich nur die Möglichkeit, nicht von UserControl abzuleiten, sondern du musst UserControl lediglich als (private) Member in der Klasse verwenden.

Ich würde aber nochmal überlegen, ob das wirklich nötig ist, dass die Member/Methoden der Basisklasse nicht verfügbar sein sollen. Damit handelst du dir nämlich auch ein umständlicheres Handling ein: Das Hinzufügen zu einer Form geht dann nur indirekt über eine spezielle Methode deiner Klasse und im Designer ist dieses Control dann nicht verwendbar.

Gruß
MCoder
 
Hi

Hast du schon mal probiert, die Methoden zu überschreiben und damit zu verstecken?

C#:
private override void MethodeDieDuVersteckenWillst()
{
    base.MethodeDieDuVersteckenWillst();
}
 
Danke für eure Antworten
Hmm das mit dem überschreiben is ne gute möglichkeit


Ich hab halt vorallem das Problem dass somit an dem Teil wirklich alles änderbar ist , und wenn man z.B. visual studio mit intelli sense benutz echt unübersichtlich wird .

MfG RamDav
 
Zurück