Avatar billede Slettet bruger
13. februar 2006 - 11:05 Der er 9 kommentarer og
1 løsning

Bruge en Progressbar til audio seek, hvordan?

Hvordan henter jeg ud, hvor på progressbaren man trykker (der hvor sangen skal seeke hen for at spille)?

Det kan jo nemt gøres med en trackbar, men ville super gerne gøre det med en progressbar, jeg ved det er muligt..

Lad os sige at minimum er 0 og maximum er 100, så hvis jeg trykker på midten af progressbaren, popper en messagebox op med værdien 50..
Avatar billede 2c Nybegynder
13. februar 2006 - 12:02 #1
Kan du ikke bare sætte maksimum på progressbaren til længden af det musik der skal spilles?

Eller har jeg overhovedet ikke forstået det?
Avatar billede Slettet bruger
13. februar 2006 - 12:36 #2
Den skal bruges til at Seeke, altså spole om man vil. Frem eller tilbage..
Avatar billede 2c Nybegynder
13. februar 2006 - 12:55 #3
Ah, nu er jeg med.
Det ved jeg ikke hvordan man gør, men det må være svært, du skal jo vide hvorhenne du så trykker på progressbaren.
Avatar billede Slettet bruger
13. februar 2006 - 12:59 #4
Det er jo netop det :-)

Men ved det er muligt.. VLC player bruger det bl.a
Avatar billede aaberg Nybegynder
13. februar 2006 - 14:22 #5
Super simpelt. Tog mig 1 minut at lave en CustomControl der gør jobben.

public class ProgressChooser : ProgressBar
{
    public ProgressChooser()
    { }

    protected override void OnMouseDown(MouseEventArgs e)
    {
        base.OnMouseDown(e);

        this.Value = (int)((100f / (float)this.Width) * (float)e.X);
    }
}

Ovenstående CustomControl nedarver fra ProgressBar. Idet at du trykker på den, regner den en ny "Value" ud, og sætter sig selv.
Avatar billede Slettet bruger
14. februar 2006 - 08:57 #6
Jeg kan ikke helt se hvordan jeg bruger dette?
Avatar billede aaberg Nybegynder
14. februar 2006 - 09:12 #7
Du opretter en ny klasse. visual studio laver en eller anden standart tom klasse til dig. Derefter overskriver du koden (Start under namespace sætningen), med det jeg skrev i min sidste kommentar. Nu har du lavet en CustomControl.

Denne CustomControl kan du trække ind fra Toolboxen i Visual Studio (Ligesom hvis du trækker en almindelig Progressbar ind på din form).

Du kan også gøre det hele på en lidt anden måde. Du kan tilføje en almindelig ProgressBar til din Form, og abonnere på "MouseDown" eventet. I metoden der håndtere MouseDown eventet skriver du følgende kode.

private void progressBar1_MouseDown(object sender, MouseEventArgs e)
{
    this.progressBar1.Value = (int)((100f / (float)this.progressBar1.Width) * (float)e.X);
}
Avatar billede Slettet bruger
14. februar 2006 - 09:16 #8
Brugte:


private void progressBar1_MouseDown(object sender, MouseEventArgs e)
{
    this.progressBar1.Value = (int)((100f / (float)this.progressBar1.Width) * (float)e.X);
}

Og det virker perfekt, mange tak!.. smid et svar :-)
Avatar billede aaberg Nybegynder
14. februar 2006 - 09:21 #9
Grunden til at jeg foreslog at lave en CustomControl er, at jeg er lidt af en "CustomControl freak". :-)

Her er svaret.
Avatar billede Slettet bruger
14. februar 2006 - 09:28 #10
Hehe, kender det godt, men tak for hjælpen..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester