Hi,
du mußt jeden einzelnen Eintrag im Array gesondert angeben, d.h.
Struktur[] struktur = new Struktur[2] { new Struktur(10), new Struktur(10) };
(ich hoffe, das nimmt der Compiler so, habe gerade kein VS offen
Bei größeren Arrays würde ich dagegen alles per Code in einer Schleife abarbeiten lassen.
Edit: Deine Struktur sieht aber nicht unbedingt nach einem typischen Wertetyp aus. Daher wäre m.E. eine Klasse (class) besser dafür.
Hallo Leute,
ich habe in meinem Programm eine Funktion zum Umschalten der Sprache implementiert. Funktioniert auch bis auf das Menustrip. Dort werden die Texte der Items nicht übersetzt.
Mein Code sieht so aus:
private void comboBox_Verfuegbare_Sprachen_TextChanged(object sender, EventArgs e)
{
switch (comboBox_Verfuegbare_Sprachen.Text)
{
case "Deutsch":
localize(CultureInfo.CreateSpecificCulture("de"));
break;
case "English":
localize(CultureInfo.CreateSpecificCulture("en"));
break;
default:
break;
}
}
private void localize(CultureInfo culture)
{
Thread.CurrentThread.CurrentUICulture = culture;
// Beschriftungen setzen
ApplyControlResources(new ComponentResourceManager(this.GetType()), this);
}
private void ApplyControlResources(ComponentResourceManager resourceManager, Control control)
{
// Prüfen, ob es sich um eine Form handelt
// =======================================
if (control is Form)
{
resourceManager.ApplyResources(control, "$this");
}
else
{
resourceManager.ApplyResources(control, control.Name);
}
// Prüfen, ob es sich um eine Komponente handelt
// =============================================
if (control is IComponent)
{
// Alle untergeordneten Controls durchgehen
// ========================================
foreach (Control childControl in control.Controls)
{
// Rekursiver Aufruf
ApplyControlResources(resourceManager, childControl);
}
}
}
Hat jemand eine Idee warum es nicht funktioniert?
Danke
Es liegt daran das Location vom Type "Point" ist, also ein Value-Type. Die Property gibt daher eine eine Kopie zurück (byValue halt). Location.X würde also den X-Wert eines temporären Point-Objektes ändern, nicht das tatsächliche Location-Objekt.
Die irreführende Anzeige von Intellisense rührt von daher, das hier die Doku der Point-Klasse angezeigt wird.
Einfacher kann man die Location natürlich mit:
Location = new Point(x,y);
oder gleich
Left = x;
Top = Y;
Wieso machst du ein neuen Thread auf?
Und wie man es verwendet habe ich in dem anderen Thread doch im Pseudocode geschrieben.
List<int>lotto;
lotto = new List<int>();
Fass das zusammen nach
List<int>lotto = new List<int>();
lotto.Add(AnzahlZahlen);
Das fügt die Zahl 6 der Liste hinzu, dadurch hast du dann 1 Element in der Liste.
lotto.Contains(AnzahlZahlen);
Hier prüfst du ob die Zahl 6 in der Liste vorhanden ist.
Was du suchst ist das hier:
for (int i = 1; i <= AnzahlKugeln; ++i)
lotto.Add(i);
lotto.Sort();
Hier sortierst du nun die Zahlen (in deinem Fall die Zahl 6) der reihe nach, aber du möchtest ja ein Shuffle erreichen.
Was du suchst ist das hier:
lotto.Sort(g => Guid.NewGuid());
Nun gibst du bei dir die Zahl 6 aus, aber was du ausgeben möchtest sind 6 Zahlen von den zufällig gewürfelten 49
Was du suchst ist das hier:
var numbers = lotto.GetRange(0, AnzahlZahlen);
foreach (var number in numbers)
Console.WriteLine(number);
Es ist doch alles ganz einfach.
1. Erstelle eine Liste mit allen verfügbaren Zahlen (lotto<int>)
2. Schüttel die Liste einmal durch (lotto.Sort)
3. Ziehe eine gewünschte anzahl (GetRange)
4. Gib sie dann in der Konsole aus (Console.WriteLine(number))
Servus,
zuerst solltest du dir angewöhnen den geposteten Code in Tags zu setzen. Dann könntest du dir vielleicht vorher Gedanken darüber machen, ob nicht vielleicht ein anderer User vor einem ähnlichen Problem stand. Das führt dann auch dazu, dass man die Suche benutzt. Mal ganz nebenbei, solche Themen wie Primfaktorzerlegung gibts zu Hauf...
Gut, hättest du diese ganzen Ratschläge beachtet, dann wärst du auf (u.A.) folgenden Thread gestoßen:
http://www.c-plusplus.net/forum/224509
Ok, es ist nun C++. Aber das sollte bestimmt kein Hindernis sein, dass Ganze umzuschreiben oder?
Ne, bestimmt nicht. Hättest du auch das berücksichtigt, dann wurde dein Code nun ungefähr so aussehen:
static void Main(string[] args)
{
long zahl = 20;
long teiler = 0;
Console.Write("{0} = ", zahl);
while (zahl != 1)
{
teiler = Teiler(zahl);
Console.Write(teiler);
zahl = zahl / teiler;
if (zahl != 1)
Console.Write(" * ");
}
Console.WriteLine();
Console.WriteLine("Programmende!");
Console.ReadLine();
}
static long Teiler(long zahl)
{
long teiler = 2;
long x = (long)Math.Sqrt(zahl);
while (zahl % teiler != 0)
{
if (teiler >= x)
return zahl;
else
teiler++;
}
return teiler;
}
Verblüffend oder?
Hallo kratos,
wenn du Interop programmieren willst, könntest du auch direkt C++/CLI verwenden.
Oder aber dein C++ Programm bietet eine reine C-Schnittstelle an und du greifst von C# aus per P/Invoke ([DllImport]) darauf zu (wie GPC schon geschrieben hat).
Hallo,
ich bin grad dabei ein OpenSource Tool zu programmieren.
Kennt jmd einen Public Key Server über den ich per C# Schlüssel hoch bzw. downloaden kann? bzw auch weiß wie das geht?
Danke
Jup, kann man so stehen lassen, bis auf ein Detail:
C# ruft in dem Ansatz nur managed C++ auf (C++/CLI).
Der Aufruf nativer Funktionen/nativem C++ passiert nur innerhalb der DLL zwischen C++/CLI und C++;
Du hast also eine Dll die sich nach aussen wie eine normale managed Dll verhält und nur intern native Anteile hat.
Vergisst man pin_ptr, so "funktioniert" auch erstmal alles auf den ersten Blick, halt bis die erste GC zum unpassenden Zeitpunkt läuft...
Hallo Harald,
wenn du mehrere UserControls erzeugt hast, dann speichere diese am besten in einer List<T>, d.h.
List<MyUserControl> myUserControls; // als Klassenmember der Form
// in Methode, welche die UserControls erzeugt
MyUserControl uc = new MyUserControl();
myUserControls.Add(uc);
Und dann kannst du mit einer for- oder foreach-Schleife alle UserControls durchiterieren:
foreach(MyUserControl uc in myUserControls)
uc.Inform(...);
Okay, ich hatte
AllowUserToAddRows
auf false gesetzt, da ich dachte das wäre die Möglichkeit durch klicken was zu verändern, und nicht durch funktionsaufrufe...
Jetzt gehts =)....