Ich hab eine übergeordnete Klasse die einen bool Member m_loesenPressed und ein Member Array aus einer anderen Klasse "Feld" hat. Im Konstruktor der übergeordneten Klasse wird dann das Array der Felder initialisiert und ich übergebe den bool Member als ref, damit bei einer änderung des bools in einem der Felder ich die Änderung auch in der übergeordneten Klasse mitbekomme. Allerdings funktioniert das nicht, der bool wird für jedes Feld getrennt behandelt und es läuft nicht so wie ich mir das gedacht hab, das es also praktisch nur ein einziges m_loesenPressed gibt und sobald sich das irgendwo ändert ich das auch an allen anderen Stellen mitbekomme. Es ist also eher so als würde ich den bool by value übergeben.
Edit:
Ich hab daneben noch eine eigene Klasse Colors von der ich eine Instanz genauso benutze, damit ich in den einzelnen Feldern und in der übergeordneten Klasse die selben Farbe zur Hand hab und mit der funktioniert das wunderbar.
public class1
{
...
private Feld[,] m_fields;
private bool m_loesenPressed;
private Colors m_colors;
...
public class1
{
...
for( int i = 0; i < 9; i++ )
{
for( int j = 0; j < 9; j++ )
{
m_fields[i, j] = new Feld( ref m_colors, ref m_loesenPressed );
}
}
...
}
...
public class Feld
{
...
private bool m_loesenPressed;
private Colors m_colors;
...
public Feld( ref bool t_loesenPressed )
{
...
m_loesenPressed = t_loesenPressed;
m_colors = t_colors;
...
}
...
private void hauptfeld_TextChanged( object sender, System.EventArgs e )
{
m_loesenPressed = false;
}
}
Die Farbe lass ich lieber auf Control, spricht mich irgendwie eher an wie das ganze als Info einzufärben!
ControlBox auf false is ne gute Idee, danke, so hab ich schon nich n Problem irgendwie das schließen als drücken der Abbrechen Taste zu interpretieren!
Ein FixedDialog isses schon
Die VS2005ImageLibrary hab ich leider nich, wahrscheinlich wegen der Express Version!
Für das Hintergrundfarbenproblem und das Icon hab ich inzwischen auch eine etwas andere Problemlösung gefunden! Und zwar unterstützt das png Format mehrstufige Transparenz. Ich hab also einen Screenshot im Adobe ImageReady etwas überarbeitet und hab nun das Icon das sich schön an den Hintergrund anpasst!
Das wär dann doch noch ein guter Start ins Wochenende
public partial class bittewarten : Form
{
Thread m_loeseThread;
XForm m_main;
public bittewarten( XForm t_main )
{
InitializeComponent();
m_main = t_main;
m_loeseThread = new Thread( new ThreadStart( start ) );
}
private void start()
{
m_main.loese();
this.Close();
}
private void cancel_Click( object sender, EventArgs e )
{
m_loeseThread.Abort();
this.Close();
}
public new void Close()
{
if( this.InvokeRequired ) this.Invoke( new MethodInvoker( this.Close ) );
else base.Close();
}
public new void ShowDialog()
{
m_loeseThread.Start();
base.ShowDialog();
}
}
Ich würde nur am liebsten noch in dem Control das MessageBoxIcon.Exclamation anzeigen! Die einzigste Idee die ich bisher dazu hatte war einen Screenshot davon zu machen und diesen dann in eine PictureBox zu packen, das blöde daran ist nur das wenn jemand eine andere Hintergrundfarbe für die Dialogfelder gewählt hat um das Ausrufezeichen eben die Farbe von meinem Screenshot gezeigt wird und nicht die eingestellte Hintergrundfarbe! Gibts ne möglichkeit die picture Box so anzupassen dass nur das gelbe dreieck genau reinpasst oder das Icon direkt anzuzeigen?
In meinem Fall wird doch die Message Box vom GUI-Thread angezeigt, oder hab ich da jetzt was falsch verstanden?
Dann wär in meinem Fall wohl das Beste ich bastel mir sozusagen eine eigene MessageBox die nur den Abbrechen Button enthält und die ich dann am Ende des gestarteten Threads schließe! Ich hatte nur gehofft dass das ganze etwas einfacher is!
Gibts vielleicht eine andere möglichkeit das Control zu sperren solange der Thread ausgeführt wird?
Ich möchte beim ausführen eines Threads eine "Bitte warten!" Message Box anzeigen, damit auf dem eigentlichen Control z.B. keine Tasten mehr gedrückt werden können! Sobald der Thread nun fertig ist mit seiner Aufgabe soll die MessageBox wieder geschlossen werden. Außerdem soll beim drücken des Abbrechen Buttons der Thread abgebrochen werden.
Bisher sieht mein Code dazu so aus:
Leider konnte ich keine möglichkeit finden nur einen Abort-Button anzeigen zu lassen, außerdem weiß ich nicht wie ich es anstellen soll das die MessageBox wieder verschwindet wenn der Thread fertig bearbeitet ist. Ich hoffe auf eure Hilfe!
Nur wenn ich jetzt sozusagen die übergeordnete Methode mit invoke aufrufe wird ja wiederum dieser ganze code im ursprünglichen Thread aufgerufen womit bei mir wiederum das problem mit dem control aktualisieren auftritt!
D.h. mir bleibt wohl nichts anderes übrig wie einen geeigneten zwischenweg zu finden!?
eigentlich nicht, da ich zumindest jetzt beim testen nur durch einen Button Click eine Methode aufgerufen hab die eben jetzt in einem eigenen Thread laufen soll! Sonst passiert nichts weiter! Ich will halt dass das Control immer aktuell bleibt, deshalb setze ich den Thread ein!
Nachdem ich bei mir einen 2. thread eingebaut habe braucht das Proggi für die selbe Aufgabe plötzlich ca. 3 mal solang!
Was ich bisher mithilfe der Stopwatch rausfinden konnte war das der aufruf hier:
auch mehrmals solang braucht wenn ein extra Thread benutzt wird wie wenn alles in einem Thread läuft!
Auch mit der folgenden Lösung hab ich dasselbe Problem:
Ich bin gerade auch dabei das erste mal etwas mit Threads zu machen, nachdem ich mich jetzt gestern und heute ein paar Stundenlang damit beschäftigt hab hier im Forum und auf anderen Seiten in das Thema einzulesen hab ich mich jetzt rangetraut damit loszulegen nur bin ich mir gerade nicht sicher mit einer Threadsicheren get / set Methode, bisher sieht sie so aus:
Für die XXX weiß ich nicht sicher was ich implementieren muss, wäre das beste ein
delegate string stringDelegate()? Oder gibts noch andere Lösungen? Oder passt bei dem ganzen sowieso was überhaupt nich?
danke für den Tipp, aber genau das wollte ich vermeiden!
Ich hatte das Prog vorher mit .Net 1.1 programmiert und dort musste ich die einzelnen clicked Events der Items nehmen! Mit dem ItemClicked Event des MenuStrip lässt sich das ganze aber schöne umsetzen!
Also mir ist jetzt noch eingefallen es über den Namen zu machen also
e.ClickedItem.Name == "..."
aber das kommt ja fast aufs gleiche raus!
Ich könnte es auch noch mit deb contextMenuStripFelder.Items vergleichen, aber dort das bestimmte herauszusuchen ginge soweit ich es bisher herausgefunden habe auch nur über den Namen!
Gibt es sonst noch möglichkeiten?
Sorry, ich hab da heut mittag ja mal mächtig was verpeilt, die SourceControl vom sender is schließlich die TextBox, steht sogar so in dem von mir geposteten code-schnippsel!
Aber der sender ist doch nicht das Item, sondern das ContextMenuStrip und mit e.ClickedItem bekomm ich dann das Item das geklickt wurde! Wobei das ja auch nich mein Problem is, sondern das ich ne etwas intelligentere Methode wollt um zu überprüfen ob genau dieses eine bestimmte Item geklickt wurde oder ein anderes! Ich finds eben nicht so schön das über den Text zu machen der in dem Item steht!
Es geht hier ja um das ItemClicked Event des ContextMenuStrip und nicht um das Click Event des MenuItem!
Hatte gedacht das Code-Beispiel wär dafür gut genug!
Ja, aber dann muss ich eben noch überprüfen ob es ein ganz bestimmtes Item ist und da liegt ja das Problem!
Das ClickedItem kann ja ein ganz beliebieges des ContextMenus sein, aber nur wenn es ein ganz bestimmtest ist soll eben der Code ausgeführt werden und sonst eben ein anderer Code!
Mit dem sender krieg ich ja das Object indem das Context Menu geöffnet wurde, in meinem Fall ist das ne TextBox, wüsste jetzt nich wie mir das helfen soll auf das entsprechende Item des Context Menus zu kommen!?
Guten Tag!
Ich hab ein contextMenuStrip und möchte im ItemClicked Event überprüfen ob ein bestimmtes Item geklickt wurde. Ich bin bisher nur auf die Idee gekommen auf den Text des Items zu prüfen also z.B. so:
e.ClickedItem.Text == "markiert"
Ich denke aber das es da doch bestimmt eine bessere Lösung geben muss!
Wär super wenn ihr mir ein paar entsprechende denkanstöße habt!
Guten morgen!
Kann ich herausfinden an welche Stelle die IEnumerator Instanz zeigt? Es handelt sich dabei um eine Array List, falls das von bedeutung sein sollte!
Ich wüsste jetzt nich wie ich das machen soll!
Dafür bräuchte ich ja eine Tiefe Kopie der IEnumerator instanz, ich konnte bisher aber keine möglichkeit finden so etwas zu erstellen!
So sieht der Funktionsaufruf aus:
Guten Tach!
Ich hab eine Funktion geschrieben der als Parameter ein IEnumerator übergeben werden muss. Ich musste jetzt nur leider feststellen dass beim Funktionsaufruf keine kopie von der IEnumerator instanz erstellt wird, so dass nachdem die Funktion durchgelaufen ist, in der Funktion aus der ich die andere Funktion aufgerufen habe nachher die IEnumerator instanz an der falschen stelle steht.
Habt ihr da einen Lösungsvorschlag für mich?
Also die Eingabe der IP und des Ports im Browser hab ich vorhin schon ausprobiert gehabt, das Ergebnis ist bei mir nur nicht so toll, liegt wahrscheinlich daran dass der WebService ins C++ mithife von gSoap geschrieben ist!
Mit dieser XML-Datei sind anscheinend keine Style-Informationen verknüpft. Nachfolgend wird die Baum-Ansicht des Dokuments angezeigt.
<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
<SOAP-ENV:Fault SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>HTTP GET method not implemented</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Der Web Service läuft auf einem anderen PC neben mir und ich hab mir die gesendeten Daten dort abspeichern lassen, und das entspricht schon dem was ich erwarte, nur scheint eben dann entweder bei der übertragung oder beim deserialisieren was schief zu laufen!
Leider kenn ich mich damit noch nich so gut aus dass ich die Funktionen jetzt kurz mal von einem Browser aus aufrufen könnte! Ich hab die Web Service anfragen bisher immer nur direkt im Visual Studio programmiert!
Wenn das kein großes ding ist kannst du mir das kuz erläutern oder hast nen Link wo sowas beschrieben ist?
Ansonsten such ich wohl eher nach was wie ich die Empfangenen Daten direkt abspeicher, im C++ geht das ja schließlich auch!
Guten Tag!
Ich hab ein kleines Problem mit meinem Client zu einem Web Service, die Funktionen die ich mit dem Client aufrufe werden zwar am Server ausgeführt, doch die Daten am Client enthalten dann immer ein null. Deshalb möchte ich mir gerne das was der Client empfängt als XML Message abspeichern, kann mir jemand sagen wie das geht?
Hallö!
Kennt jemand von euch eine Site wo man Visual C# 2005 Express oder/und Visual C++ 2005 Express direkt runterladen kann?
Bei dem File das ich auf der MSDN Seite gefunden habe werden die Dateien ja nur beim installieren runtergeladen!