PDA

Vollständige Version anzeigen : Controls ohne Eigenschaft "Name"


cosmic2
12.09.2004, 09:31
Hallo Leute

Habe da mal eine Frage.
Gibt es eine Möglichkeit z.B. MenuItems denen man keinen Namen zuweisen kann im Code eindeutig zu erkennen. Mit Index geht nicht, da man diesen nicht fest setzen kann.

Geht dies mit IContainer, IComponent, ISite? Wenn ja wie muss ich das machen?

Hat jemand eine Idee?

Danke im Voraus

Grüsschen Jörg

chrissy
12.09.2004, 11:50
wie kommst du darauf das man MenuItems keinen Namen zuweisen kann?

cosmic2
12.09.2004, 14:38
Weil ich dies im DropDown Menu nicht auswählen kann.
Fehlermeldung "MenuItem enthält keine Definiton für Name".

Oder wie machst Du das Chrissy?

Noodles
12.09.2004, 15:04
Ich verstehe Dich nicht ganz.
Dim menuItem1 As New MenuItem
Jetzt hat das MenuItem doch einen Namen über das Du es indentifizieren kannst.

Edit:
Index:
' der 1. Eintrag im 1. MenüItem
DeinMainMenu.MenuItems(0).MenuItems(0).Text

chrissy
12.09.2004, 16:13
eben, mit welchem tool schreibst du deinen code cosmic?
jedes menuitem hat die propertys name und text, diese kann man auch abfragen.

hier mal schnell was ausm kopf (keine garantie ;) )

Dim mI As MenuItem
Dim i As Integer = Menu.MenuItems.Count
Dim j As Integer

For Each mI In Me.MainMenu1.MenuItems
For j = 0 To i
MessageBox.Show(mI.MenuItems(j).Text + " - " + mI.MenuItems(j).Index.ToString)
Next
Next

cosmic2
13.09.2004, 09:50
hallo danke für eure antworten.
habe da noch was kleines vergessen sorry.

also ich möchte den text für die controls aus einer DB auslesen. anhand des namens identifiziere ich die controls und setze den entsprechenden text. jetzt ist dies aber bei MenuItems nicht möglich einen namen zu geben und somit kann ich das control nicht erkennen.

evtl. funktioniert eure idee ja auch schon muss mal schauen.
meine idee ist eine eigene klasse zu schreiben. mit einer einer zusätzlichen variable für den namen. aber wenn es anders geht wäre ich auch froh.

kann mir jemand sagen für was man IContainer und ISite gebrauchen kann?

also dankä viel mol fürs erschti
grüässli
jörg

Noodles
13.09.2004, 10:08
Also ich kann Dein Problem in keinster Weise nachvollziehen.
Wenn Du die MenuItems über den GUI Designer anlegst, dann hast Du im Eigenschaftenfenster unter Name den Namen des Items und damit kannst Du dieses Item ansprechen.

Per Code:
Dim ichBinDerNamediesesMenuItems As New MenuItem ' VB.NET
MenuItem ichBinDerNamediesesMenuItems = new MenuItem(); // C#
ichBinderNamediesesMenuItems.Text = DerMenuItemText;

cosmic2
13.09.2004, 10:23
ja ist schwierig vielleicht denke ich auch falsch. ich möchte eine methode schreiben, die bei allen controls den text wechselt. jetzt damit ich nicht jede variable einzeln angeben muss habe ich folgendes vor.

Form frmForm = new Form();
TextBox txtTextBox1 = new TextBox();
TextBox txtTextBox2 = new TextBox();

txtTextBox1.Name = "txtTextBox1 "; //Bei MenuItems geht dies nicht
txtTextBox2.Name = "txtTextBox2";

while(solange es Datensätze gibt)
{
while(SolangeEsControlsImFormGibt)
{
if(frmForm.Controls[i].Name == "NameAusDerDatenbank")
{
frmForm.Controls[i].Text = "TextAusDerDatenank";
}
}
}

Das gleiche wollte ich mit den MenuItems machen.
Geht eben so nicht.

chrissy
13.09.2004, 10:27
oha du willst den namen dynamisch zuweisen?
dann musst du aber die controlls dynamisch erstellen.
du kannst soweit ich das weiß nicht den namen eins controlls zur laufzeit ändern.

du müsstes also für jeden wert den du hast ein neues menuitem objekt erstellen.
genau so wie noodles es in seiner letzten antwort beschrieben hat mit 'new'

chrissy
13.09.2004, 10:29
hier ist ne richtig gute umsetzung dynamischer controls:
xml controls (http://www.codeproject.com/csharp/aal-5a.asp)

Noodles
13.09.2004, 10:32
foreach(MenuItem mi in mainMenu.MenuItems)
{
MessageBox.Show(mi.Text);
foreach(MenuItem m in mi.MenuItems)
MessageBox.Show(m.Text);
}

So sprichst Du jedes MenuItem der Reihe nach an, vielleicht hilft es ja.

cosmic2
13.09.2004, 10:43
nein ich möchte nicht den namen dynamisch sondern den text.
die controls definiere ich alle fest und einmalig.
damit ich den text dem richtigen control zuweisen kann muss ich dieses ja eindeutig identifizieren können in der datenbank. und da wäre der name optimal. so kann ich die methode wie oben kurz aufgeführt verwenden. aber wenn ich nichts zum vergleichen habe geht dies nicht.

Noodles
13.09.2004, 11:30
damit ich den text dem richtigen control zuweisen kann muss ich dieses ja eindeutig identifizieren können in der datenbank. und da wäre der name optimal.

Dann benutze doch den Namen und setze den text bei den einzelnen Items. Wo sich der Name befindet wurde hier genug erklärt.