Avatar billede espeholt_jr Nybegynder
03. marts 2005 - 15:11 Der er 13 kommentarer og
3 løsninger

Finde "sender"s navn?

hvordan finder man "sender"s navn? fx i en MouseClick...
Avatar billede driis Nybegynder
03. marts 2005 - 15:17 #1
En mulighed er:

if ( sender is Control )
  name = ((Control)sender).Name;
Avatar billede espeholt_jr Nybegynder
03. marts 2005 - 16:18 #2
virker vist ikke?
Avatar billede driis Nybegynder
03. marts 2005 - 17:20 #3
Så må du beskrive dit problem lidt bedre.

Er det Name propertyen du vil kende ? Eller er det klassenavnet ?
Ovenstående kode virker kun på klasser der arver fra System.Windows.Forms.Control; altså de fleste klasser der kan generer en MouseClick event.

Post evt. lidt mere kode.
Avatar billede espeholt_jr Nybegynder
03. marts 2005 - 18:26 #4
skal bruge senders navn... altså .Name property... :) undskyld hvis jeg ikke har udtrykt mig klart
Avatar billede Syska Mester
03. marts 2005 - 18:40 #5
smid noget kode så, andet skulle virker...
Avatar billede espeholt_jr Nybegynder
03. marts 2005 - 19:19 #6
MessageBox.Show(((Control)sender).Name);

den viser intet...
Avatar billede driis Nybegynder
03. marts 2005 - 19:22 #7
Sikker på at .Name er sat til noget ?
Avatar billede espeholt_jr Nybegynder
03. marts 2005 - 19:32 #8
den kan vel ikke være intet??? et component skal da hedde noget??
Avatar billede driis Nybegynder
03. marts 2005 - 20:38 #9
Hvis du ikke har sat Name, er det en tom streng. Se flg. eksempel:
public class MyWindow : Form
{
private Button b1;

public static void Main(string [] args)
{
    Application.Run(new MyWindow());
   
}

public MyWindow()
{
    b1 = new Button();
    b1.Name = "MyButton";
    b1.Text = "Click me";
    b1.Click +=new EventHandler(b1_Click);
    this.Controls.Add(b1);
}

private void b1_Click(object sender, EventArgs e)
{
    if ( sender is Control )
        MessageBox.Show(this,((Control)sender).Name);
}
}
Prøv at udkommentere linjen med b1.Name = MyButton. Så vises der netop en tom messagebox.
Avatar billede driis Nybegynder
03. marts 2005 - 20:40 #10
Hvis du istedet forventede at messagebox'en skulle vise "b1", så kan det ikke lade sig gøre. b1 er navnet på en reference til objektet, og det er ikke tilgængeligt run-time (det giver heller ingen mening at det skulle være det).
Avatar billede espeholt_jr Nybegynder
03. marts 2005 - 21:51 #11
hhm... okay... men hhm har et enormt problem så :/

Jeg skal nemlig kunne oprette nogen objecter runtime, og de skal self. ikke hedde det samme... hvad skal jeg så gøre der?
Avatar billede driis Nybegynder
03. marts 2005 - 22:25 #12
Hvad er dit problem ? At du ikke kan skelne de enkelte objekter fra hinanden ?

I så fald er du nødt til at tildele dem noget information, der kan hjælpe dig. Name property'en kunne f.eks. bruges til det. Der er et fint eksempel i docs hvis du slår op under Control.Name. Udsnit derfra:

Control.Name.
Gets or sets the name of the control.

[C#]
public string Name {get; set;}

Property Value
The name of the control. The default is an empty string ("").

Remarks
The Name property can be used at run time to evaluate the object by name rather than type and programmatic name. Because the Name property returns a String type, it can be evaluated in case-style logic statements (Select statement in Visual Basic, switch statement in C# and C++).
Avatar billede espeholt_jr Nybegynder
03. marts 2005 - 22:33 #13
jo kan godt skelne mellem dem...

MEN hvordan "opretter" jeg så objecter som ikke har samme navn... en slags random...
Avatar billede espeholt_jr Nybegynder
03. marts 2005 - 22:34 #14
har lige sat 60 på istedet for 30 hvis du kan svarer mig på dette også...
Avatar billede espeholt_jr Nybegynder
03. marts 2005 - 22:52 #15
jeg mener, jeg kan jo ikke gøre dette:

ListBox noget = new ListBox();
noget.name = "List1";

ListBox noget = new ListBox();
noget.name = "List1";

kan man evt. lave et object array, som kan kontrollere dem via strings?
Avatar billede driis Nybegynder
03. marts 2005 - 23:41 #16
ListBox [] lb = new ListBox[5];

for ( int i = 0 ; i < 5 ; i++ )
{
  lb[i] = new ListBox();
  lb[i].Name = "lb" + i.ToString();
}

f.eks.
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