Nimm das [i] weg dann passt es, denn bei jedem Click-Ereigniss wird das geklickte Steruerelement als sender-Parameter übergeben. Den Index des Steuerlementes erhälst du entweder, indem du den Index in die Tag-Eigenschaft schreibst und die dann in der Methode ausliest oder über die IndexOf-Funktion der Liste.
Super Th69 haut hin...
Stimmt ja, wir sind hier ja im C# Forum...upps
Hier meine Abwandlung...
array<Process^>^ processes = Process::GetProcessesByName("TestProg");//Ohne .exe
if(processes != nullptr)
{
for each(Process^ process in processes)
{
if(process->MainWindowHandle.ToPointer() != nullptr)
{
HWND hwnd = (HWND)process->MainWindowHandle.ToPointer();
SetForegroundWindow(hwnd);
break;
}
}
}
Super, danke Dir 1001 Mal...
azok schrieb:
Ich arbeite zur Zeit an einer MDI-Anwendung. Mit mehreren Fenstern etc. funktioniert dies auch ganz prima. Ich hätte nun jedoch gerne irgendwo eine Leiste gehabt, in der ich die einzelnen Fenster 'intern' also quasi eine 'programminterne' Taskleiste, ablegen kann.
Reicht dir ein Menu, so wie in Visual Studio unter dem Menüpunkt Fenster?
Entspricht zwar nicht genau deinen Vostellungen, ist aber umso einfacher umzusetzen:
In der MDI-From wird ein MenuStrip einfgefügt und bei Form::MainMenu ausgewählt. Dem Strip wird ein Menüpunkt hinzugefügt und dieses unter MenuStrip::MdiWindowListItem ausgewählt. Fertig.
Sonst ist eine Taskleiste sehr einfach, wenn du nur eine Art von Kinderfenstern hast bzw. diese nur auf eine Art behandelt werden sollen.
Bei modalen Unterfenstern reicht es, einfach auf die Properties nach dem Aufruf zuzugreifen:
// in Form1
using(Form2 form2 = new Form2()) // Dispose wird am Ende aufgerufen
{
// Properties setzen
form2.Text = "Hallo World!";
form2.Number = 42;
if(form2.ShowDialog(this) == DialogResult.OK)
{
// Zugriff auf Properties
string text = form2.Text;
int number = form2.SelectedNumber;
}
}
Bei nicht-modalen Fenstern sollte der Zugriff dann über ein Ereignis (Event) erfolgen, und in diesem kann dann auf die Properties des anderen Fensters zugegriffen werden (wie oben).
Evtl. ist meine Wortwahl "NICHT gegenseitig" falsch verstanden worden, damit meine ich, daß nur der Aufrufer das andere (untergeordnete) Form kennen sollte (aber niemals umgekehrt bzw. beide sich gegenseitig!).
Man sollte auch nie direkt auf die Steuerelemente einer Form direkt zugreifen, sondern immer nur Daten austauschen (evtl. dafür dann eine eigene Klasse bzw. Struktur definieren).
P.S: Ich kann dir auch noch das http://www.mycsharp.de/wbb2/forum.php empfehlen (das ebenfalls eine sehr gute FAQ sowie Artikel besitzt).
neoexpert schrieb:
patecevap, wo hast du denn diese Aufgabe her? Schule?
Erwartet der Aufgabensteller die Antwort auf dem Papier?
3 facher Ausfertigung und schon gelocht - bereit zum abheften
Hallo!
Erstmal Danke für Deine Antwort:
Anzeigen lasse ich es wie folgt:
TreeNode node = new TreeNode();
node.ContextMenuStrip = contextMenuStrip1;
Habe eben auch ein OnOpening-Event hinzugefügt.
Aber auch hier kann ich nicht bestimmen, auf welches Element gerade gezeigt wird.. oder habe ich etwas übersehen?
Das sind die Parameter:
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
//sender ist der ContextMenuStrip selbst
}
Vielen Dank für weiter Hilfe..
Gruß
Jetzt braucht jede abgeleitete Klasse den Age Parameter, obwohl sie diesen selbst nicht braucht, sondern nur an die Basisklasse durchwinkt.
Aus Sicht des Software engineerings und der is_a Beziehung braucht Dog ist das Alter Teil des Objektes Hund. Alle Basisklasseneigenschaften durch Animal sind Teil von Dog, auch wenn diese nur "durchgereicht" werden.
Es gibt eine abstrakte Basisklasse "Base", diese benötigt zwingend einen Wert für "RequiredMember".
Tja und welcher Wert? Da das aber erst zur Laufzeit feststeht, ist ein parametrisierter Konstruktor die logische Wahl, vielleicht mit default-Wert.
Und wer bei dieser Kleinigkeit von Redundanz redet, sollte aufhoeren, objektorientiert zu arbeiten.
Nur als Hinweis:
Eine Lösung für das oben beschriebene Szenario habe ich nicht gefunden.
Die Lösung, die jetzt impl. ist, basiert darauf nicht die Eingaben zu validieren, sondern das Model zu validieren.
Simon
Also unter Vista 32 Bit jetzt keine Probleme gehabt. OCX wurde auch selbst vom Installationsprogramm registriert. Vielleicht gibt es gewisse Steuerelemente die garnicht laufen unter Vista?
Hallo Leute,
Data Contracte, also Klassen welche über DateContract Attribute gekennzeichnet werden, sind ja WCF Telegramme! Nun könnte ich auch gewissen Logik (funktionen) in diese Klassen einbauen, welche nicht teil des Telegrammes an sich darstellen.
bsp:
[DataContract]
class Dummy
{
[DataMember]
public string[] MyStrings{get; set;}
public void Add(string dat)
{
List<string> tmp= MyStrings.ToList();
tmp.Add(dat);
MyStrings= tmp.ToArray();
}
}
Num meine Drage, ist das schlechtes Design, oder sollte ich Logik und rohe Telegramminfos kapseln??
Grüße
@sock_stream: Okay, ich nenne sie nicht Telegramme, sondern Pakete. Für mich sind es eben einfach Daten.
@loks: Das Problem in meiner Applikation war ein ganz anderes. Die Pakete haben sich nicht gegenseitig überholt, wie ich ursprünglich gedacht hatte - eben weil es in dem Sniffer-Tool so dargestellt wurde. War tatsächlich ein Problem, dass die Serverapplikation zweimal in den Socket geschrieben hat bis der Client einmal gelesen hatte (und der Client damit zwei Pakete auf einmal lesen bekommt). Nachdem ich das herausgefunden hatte habe ich den Client etwas überarbeitet, so dass er damit jetzt auch umgehen kann.
Danke für die Hilfe und viele Grüße
Dazu musst du nur in der MSDN lesen:
MSDN schrieb:
Die DrawToBitmap-Methode weist die folgenden Einschränkungen auf.
Bei großen Bitmaps wird möglicherweise eine ArgumentException ausgelöst. Die zulässige Höchstgröße hängt vom Computer ab.
[...]
DrawToBitmap zeichnet keine untergeordnete TextBox, wenn die Visible-Eigenschaft der TextBox auf false festgelegt ist.
Steuerelemente in Containern werden in umgekehrter gerendert.
DrawToBitmap ist für die RichTextBox nicht völlig funktionsfähig. Es wird nur der Rahmen einer Bitmap gezeichnet.
Tja manche Wege sind einfach unergründlich Jedenfalls gabs von Seiten des Forums gute Hilfe - kann man nicht meckern und manchmal iss ma mal bissle verpeilt oder - wir sind doch noch alle ein wenig Mensch
hatte mich nach .NET orientiert
Grüsse
du redest viel ueber "runde klammern" - "geschweifte klammern" und auch dein ".XYZ ist nicht da" klingt alles sehr verdaechtig nach fehlenden programmierkentnissen #gg
soll kein vorwurf sein, faellt mir nur auf