Oprettet lør. d. 28. januar 2012 kl. 16:21:29

bjarnefilm
bjarnefilm (9.220 point. Point ude: 0)

Hvordan fanger man scroll event?

I mit csharp program, skal formen refreshes, hver gang brugeren scroller. Så har jeg lavet denne funktion:

// void EventHandler(object sender, EventNameEventArgs e)
        public void egen_scroll_event(Object sender, ScrollEventArgs e)
        {
            // Refresh efter scroll.
            // this.Refresh();

            // Til test er der en melder her.
            // Brødtekst
            string bt = "Du scroller.";
            // Overskrift
            string os = "Melder. Nummer 20";
            MessageBox.Show(bt, os, MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

Men funktionen bliver ikke udført, når programmet køres. Så har jeg surfet på det, og prøvet med:

// Her erklærer jeg en event handler, der skal bruges når brugeren scroller.
        // Koden er hentet fra
        // http://msdn.microsoft.com/ (...)
        // public event EventHandler EventName;
        // public event egen_scroll_event Scroll;

        // public delegate void EventNameEventHandler(object sender, EventNameEventArgs e);
        // public delegate void egen_scroll_event(object sender, ScrollEventArgs e);

        // Add event handler for the Scroll events.
        // this.Scroll += new egen_scroll_event();

Men det virker heller ikke. Er der nogen, der kan se hvor fejlen er? Man skal på en eller anden måde sætte scroll eventen sammen med egen_scroll_event.

Ved mit sidste spørgsmål, lukkede jeg for hurtigt. Denne gang skal jeg nok vente lidt, før jeg lukker.

MVH
Bjarne

Skrevet lør. d. 28. januar 2012 kl. 17:38:19| #1

arne_v
arne_v (1.016.169 point)
Hvad daekker "det virker heller ikke" over ?

Skrevet lør. d. 28. januar 2012 kl. 17:49:30| #2

bjarnefilm
bjarnefilm (9.220 point)
Jeg har prøvet mig frem. Fx:

## Eksempel start ##
// Her erklærer jeg en event handler, der skal bruges når brugeren scroller.
        // Koden er hentet fra
        // http://msdn.microsoft.com/ (...)
        // public event EventHandler EventName;
        public event egen_scroll_event Scroll;


    // void EventHandler(object sender, EventNameEventArgs e)
        public void egen_scroll_event(Object sender, ScrollEventArgs e)
        {
            // Refresh efter scroll.
            // this.Refresh();

            // Til test er der en melder her.
            // Brødtekst
            string bt = "Du scroller.";
            // Overskrift
            string os = "Melder. Nummer 20";
            MessageBox.Show(bt, os, MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
## Eksempel slut ##

Men det giver denne fejlmeddelse: "egen_scroll_event" er en metode, ikke en type.

Nyt eksempel:

## Eksempel start ##
  // Add event handler for the Scroll events.
        this.Scroll += new egen_scroll_event();


// void EventHandler(object sender, EventNameEventArgs e)
        public void egen_scroll_event(Object sender, ScrollEventArgs e)
        {
            // Refresh efter scroll.
            // this.Refresh();

            // Til test er der en melder her.
            // Brødtekst
            string bt = "Du scroller.";
            // Overskrift
            string os = "Melder. Nummer 20";
            MessageBox.Show(bt, os, MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
## Eksempel slut ##




Det duer heller ikke. Jeg kan ikke lige huske hvilken fejlmeddelelse, der kommer.

Skrevet lør. d. 28. januar 2012 kl. 17:51:22| #3

bjarnefilm
bjarnefilm (9.220 point)
Så vidt jeg kan se, skal der stå noget kode, før definitionen af egen_scroll_event.

Skrevet lør. d. 28. januar 2012 kl. 17:53:43| #4

arne_v
arne_v (1.016.169 point)
det andet eksempel boer virke fint hvis det er placeret rigtigt

Skrevet lør. d. 28. januar 2012 kl. 18:02:02| #5

bjarnefilm
bjarnefilm (9.220 point)
Her er koden, som den står i programmet:
          ## Her er en stump af koden før.
            // Tegn pilen, der peger på server samlet tilstand.
            opdater_pil();
        }

        // Her erklærer jeg en event handler, der skal bruges når brugeren scroller.
        // Koden er hentet fra
        // http://msdn.microsoft.com/ (...)
        // public event EventHandler EventName;
        // public event egen_scroll_event Scroll;

        // public delegate void EventNameEventHandler(object sender, EventNameEventArgs e);
        // public delegate void egen_scroll_event(object sender, ScrollEventArgs e);

        // Add event handler for the Scroll events.
        this.Scroll += new egen_scroll_event();

        // void EventHandler(object sender, EventNameEventArgs e)
        public void egen_scroll_event(Object sender, ScrollEventArgs e)
        {
            // Refresh efter scroll.
            // this.Refresh();

            // Til test er der en melder her.
            // Brødtekst
            string bt = "Du scroller.";
            // Overskrift
            string os = "Melder. Nummer 20";
            MessageBox.Show(bt, os, MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
             
        private void tilstand_server()
        {
            // Se hvilken tilstand serveren er i.
      ## Her er en stumo af koden efter.

Her er fejlmeddelelserne:
Error    1    Invalid token 'this' in class, struct, or interface member declaration    C:\Users\bjs\Desktop\Filer fra Store\Færdigt Csharp\Sommerhus_booking\toftevej59\toftevej59.cs    91    9    toftevej59

Error    2    Invalid token '+=' in class, struct, or interface member declaration    C:\Users\bjs\Desktop\Filer fra Store\Færdigt Csharp\Sommerhus_booking\toftevej59\toftevej59.cs    91    21    toftevej59

Error    3    Method must have a return type    C:\Users\bjs\Desktop\Filer fra Store\Færdigt Csharp\Sommerhus_booking\toftevej59\toftevej59.cs    91    28    toftevej59

Error    4    'System.Windows.Forms.ScrollableControl.Scroll' is a 'event' but is used like a 'type'    C:\Users\bjs\Desktop\Filer fra Store\Færdigt Csharp\Sommerhus_booking\toftevej59\toftevej59.cs    91    14    toftevej59

Skrevet lør. d. 28. januar 2012 kl. 18:36:16| #6

bjarnefilm
bjarnefilm (9.220 point)
Her er hele programmet. Jag har taget en kopi, og så har jeg slettet det, der ikke har med scroll-funktionen at gøre.

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;
using System.Runtime.InteropServices;
using System.IO;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Configuration;
using System.Net;
using System.Collections;
using System.Web;

namespace WindowsFormsApplication1
{
    public partial class toftevej59 : Form
    {
        public toftevej59() // Her er formens konstruktor
        {
            InitializeComponent() ;

            // Denne linie er for at kalde load.
            this.Load += new System.EventHandler(this.toftevej59_Load) ;
        }

        private void toftevej59_Load(object sender, EventArgs e)
        {
            // Sæt formens størrelse.
            this.WindowState = FormWindowState.Normal;
            egen_maksimer();
        }

        // Her erklærer jeg en event handler, der skal bruges når brugeren scroller.
        // Koden er hentet fra
        // http://msdn.microsoft.com/ (...)
        // public event EventHandler EventName;
        // public event egen_scroll_event Scroll;

        // public delegate void EventNameEventHandler(object sender, EventNameEventArgs e);
        // public delegate void egen_scroll_event(object sender, ScrollEventArgs e);

        // Add event handler for the Scroll events.
        // this.Scroll += new egen_scroll_event();

        // void EventHandler(object sender, EventNameEventArgs e)
        public void egen_scroll_event(Object sender, ScrollEventArgs e)
        {
            // Refresh efter scroll.
            // this.Refresh();

            // Til test er der en melder her.
            // Brødtekst
            string bt = "Du scroller.";
            // Overskrift
            string os = "Melder. Nummer 20";
            MessageBox.Show(bt, os, MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void egen_maksimer()
        {
            // Maksimer formen til valgt størrelse.
            this.Size = new Size(996, 621);
            this.Location = new Point(130, 150);
        }

        private void toftevej59_Paint(object sender, PaintEventArgs e)
        {
            // Erklær et tegne objekt.
            System.Drawing.Graphics tegne_objekt;
            tegne_objekt = this.CreateGraphics();
            Pen pen2 = new Pen(System.Drawing.Color.Black, 1);

            // Tegn de tre firkanter
            tegne_objekt.DrawRectangle(pen2,  15, 15, 300, 540);
            tegne_objekt.DrawRectangle(pen2, 330, 15, 300, 540);
            tegne_objekt.DrawRectangle(pen2, 645, 15, 300, 540);
        }

        private void toftevej59_Load_1(object sender, EventArgs e)
        {
            // Der skal være en Load_1.
            // Jeg ved ikke hvorfor.
        }
    }
}

Skrevet lør. d. 28. januar 2012 kl. 18:46:17| #7

arne_v
arne_v (1.016.169 point)
this.Scroll += new egen_scroll_event();

skal vaere inden i en metode

Skrevet lør. d. 28. januar 2012 kl. 18:59:31| #8

bjarnefilm
bjarnefilm (9.220 point)
Jeg skal lige se på det. Jeg vender tilbage imorgen.

Skrevet søn. d. 29. januar 2012 kl. 11:55:48| #9

bjarnefilm
bjarnefilm (9.220 point)
Tak for hjælpen.
Jeg har fået et lille skub fremad.
Jeg har lavet et testprogram, og flyttet "this.Scroll += new egen_scroll_event();" ind i konstruktoren.

Det ser sådan her ud:

using System;
using System.Windows.Forms;
using System.Drawing;

namespace WindowsFormsApplication1
{
    // public delegate void egen_scroll_event(object sender, ScrollEventArgs e);

    public partial class Form1 : Form
    {
        // public event egen_scroll_event Scroll;

        public Form1() // Her er formens konstruktor
        {
            InitializeComponent() ;
            this.WindowState = FormWindowState.Normal;
            this.Size = new Size(996, 621);
            this.Location = new Point(130, 150);

            // An EventHandler is assigned to the scroll event
            // this.Scroll += new egen_scroll_event(Scroll);

            egen_scroll_event();
        }

        public void egen_scroll_event()
        {
            if (this.Scroll != null)
                {
            // Til test er der en melder her.
            string bt = "Du scroller.";
            string os = "Melder. Nummer 20";
            MessageBox.Show(bt, os, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            else
            {
                // Til test er der en melder her.
                string bt = "Du scroller ikke.";
                string os = "Melder. Nummer 21";
                MessageBox.Show(bt, os, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

        }
    }
}

Der kommer dog stadig en fejl-meddelelse, fordi this.Scroll nogle gange er lig "null". Men det kigger jeg på.

Smid et svar, så giver jeg point.

Skrevet søn. d. 29. januar 2012 kl. 11:57:43| #10

bjarnefilm
bjarnefilm (9.220 point)
Det er til test at der står
// this.Scroll += new egen_scroll_event(Scroll);
Det er lidt indviklet.

Skrevet søn. d. 29. januar 2012 kl. 17:51:14| #11


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Print fra Windows Service på Win2008

Oprettet den 24. maj 2012 kl. 11.17
jps6kb giver 200 point for svar | Giv et svar »

Udskrive en Breadcrumb (Jeg er her >>)

Oprettet den 18. maj 2012 kl. 12.04
Qbruger giver 200 point for svar | Giv et svar »

Hjælp til at lokalisere fejl i CMS (synkron.via) dll

Oprettet den 16. maj 2012 kl. 19.31
jokkejensen giver 200 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger