Avatar billede cbadk Novice
06. maj 2012 - 21:22 Der er 6 kommentarer og
1 løsning

Problem med at overføre strings fra en Eventhandler

Hvis man har et label og man sørger for at gøre den "public". Hvordan kan det så være man ikke kan ændre teksten fra en eventhandler.

Koden fra form filen(welcomeForm.Designer.cs):
--------------------------------------------------

            //
            // statusLabel
            //
            this.statusLabel.AutoSize = true;
            this.statusLabel.Location = new System.Drawing.Point(117, 416);
            this.statusLabel.Name = "statusLabel";
            this.statusLabel.Size = new System.Drawing.Size(61, 13);
            this.statusLabel.TabIndex = 1;
            this.statusLabel.Text = "statusLabel";

og så i bunden declare den som public

        public System.Windows.Forms.Label statusLabel;
-----------------------------------------------

Og så koden fra

---------------------------------------------

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 Phidgets;
using Phidgets.Events;


namespace RFID_Payment_Client_New
{
   
    public partial class welcomeForm : Form
    {
        public welcomeForm()
        {
                   
            InitializeComponent();

                RFID rfid = new RFID(); //Declare an RFID object

                //initialize our Phidgets RFID reader and hook the event handlers
                rfid.Attach += new AttachEventHandler(rfid_Attach);
                rfid.Detach += new DetachEventHandler(rfid_Detach);
                rfid.Error += new ErrorEventHandler(rfid_Error);

                rfid.Tag += new TagEventHandler(rfid_Tag);
                rfid.TagLost += new TagEventHandler(rfid_TagLost);
                rfid.open();

                //Wait for a Phidget RFID to be attached before doing anything with
                //the object
                // Console.WriteLine("waiting for attachment...");
                rfid.waitForAttachment();


                //turn on the antenna and the led to show everything is working
                rfid.Antenna = true;
                rfid.LED = true;

                //Disabled controls until Phidget is attached

         
        }

       
        // attach event
        static void rfid_Attach(object sender, AttachEventArgs e)
        {
            welcomeForm statusString = new welcomeForm();
            statusString.statusLabel.Text = "RFID reader attached";
        }
    }
}
----------------------------------------------------

Det vil altså sige...så snart at rfid læseren er tilsluttet skal den ændre teksten til "RFID reader attached". Men selvom koden ikke gir nogen fejl ændre den ikke teksten på "label"

Nogen der har nogle forslag?
Avatar billede Spotgun Seniormester
06. maj 2012 - 22:06 #1
Du opretter jo en ny instans af din welcomeForm i din eventhandler, dvs. det ikke er den samme form som den du har vist på skærmen.

Prøv dette i stedet, så holder du dig inden for den oprindelige instans af welcomeForm, som allerede er synlig:

        static void rfid_Attach(object sender, AttachEventArgs e)
        {
            this.statusLabel.Text = "RFID reader attached";
        }
Avatar billede cbadk Novice
06. maj 2012 - 22:22 #2
Når jeg skriver det kommer den her besked:

Error    1    Keyword 'this' is not valid in a static property, static method, or static field initializer
Avatar billede Syska Mester
06. maj 2012 - 23:40 #3
din:
rfid_Attach skal ikke være static, da den så ikke har adgang til dine menber variabler.

Dvs du skal ændre:
static void rfid_Attach(object sender, AttachEventArgs e)
til
void rfid_Attach(object sender, AttachEventArgs e)
Avatar billede arne_v Ekspert
06. maj 2012 - 23:40 #4
drop static
Avatar billede cbadk Novice
04. juli 2013 - 19:28 #5
Lukketid? Nogen der vil have lidt point?
Avatar billede cbadk Novice
04. juli 2013 - 19:28 #6
PS. tak for svarene
Avatar billede Syska Mester
04. juli 2013 - 20:03 #7
svar.

Arne vil nok også gerne.
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

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