Laden...
Avatar #avatar-3052.gif
Spontifixus myCSharp.de - Member
Software-Entwickler, Rettungsassistent Hannover Dabei seit 06.09.2005 360 Beiträge
Benutzerbeschreibung

Forenbeiträge von Spontifixus Ingesamt 360 Beiträge

25.09.2006 - 15:03 Uhr

Moin

@Andreas: schonmal vielen Dank für deine Antwort.

Der Wert 23: Die Gleise haben eine festgelegte Breite und Höhe. Jeweils 23. Ich habe auch schon versucht statt der linken oberen Ecke einen beliebigen Punkt innerhalb des Controls anzusprechen, aber das geht auch nicht.

Abarbeiten über eine Liste: Soweit nicht schlecht die Idee. Aaaber: Ich erstelle die Controls nicht zur Laufzeit sondern stöpsele sie in der Entwicklungsumgebung zusammen. Und da ich keine Lust habe für jedes Element bis zu vier Nachbarn manuell einzugeben will ich das automatisieren...

Gruß,
Markus 🙂

25.09.2006 - 14:29 Uhr

Moin zusammen,

hier ein kleiner Hilferuf, aber ich komme irgendwie grad ("grad" heißt, nach mindestens 10 Stunden am Problem arbeiten) nicht weiter. Ich scheine da irgendwie ein kolossales Brett vorm Kopf zu haben.

Folgende Situation. In meiner Form gibt es ein Panel, da sind ne Menge quadratische Controls drauf, mit deren Hilfe ich einen Gleisplan abbilde. Diese Controls sind alles Derivate der Klasse Gleisplan.Elemente.GleisBasis.

Ich möchte nun die Nachbarn dieser Controls bestimmen. Die Nachbarn werden dann in Properties der einzelnen Controls gespeichert. Der Code sieht folgendermaßen aus:

// Iteration über alle augenblicklich geladenen Elemente
foreach (Gleisplan.Elemente.GleisBasis CurrentElement in panelGleisplan1.Controls)
{
  
    // Nachbarn feststellen
    CurrentElement.NachbarNord = (Gleisplan.Elemente.GleisBasis)(panelGleisplan1.GetChildAtPoint(new Point(CurrentElement.Left, CurrentElement.Top - 23)));
    CurrentElement.NachbarOst = (Gleisplan.Elemente.GleisBasis)(panelGleisplan1.GetChildAtPoint(new Point(CurrentElement.Left + CurrentElement.Width, CurrentElement.Top)));
    CurrentElement.NachbarSued = (Gleisplan.Elemente.GleisBasis)(panelGleisplan1.GetChildAtPoint(new Point(CurrentElement.Left, CurrentElement.Top + 23)));
    CurrentElement.NachbarWest = (Gleisplan.Elemente.GleisBasis)(panelGleisplan1.GetChildAtPoint(new Point(CurrentElement.Left - 23, CurrentElement.Top)));

    // Nachbarn verbinden
    CurrentElement.Anschliessen();

}

Problem: Das Programm wird anstandslos kompiliert, es tritt keinerlei Laufzeitfehler auf, lediglich die Methode GetChildAtPoint(...) liefert immer null zurück.

Kann mir jemand helfen?

Gruß,
Markus 🙂

18.09.2006 - 11:01 Uhr

Ahhh OK... jetzt wirds klarer 🙂

Gruß,
Markus 🙂

15.09.2006 - 13:10 Uhr

Moin herbivore,

ich werde mir bei Gelegenheit nochmal ein Tutorial dazu durchlesen - sonst versteh ich das nie, was da Sinn und Zweck der Sache ist... 🤔

Gruß,
Markus 🙂

15.09.2006 - 09:41 Uhr

Also:

@Programmierhans: Danke für deinen Tipp, ich hab da ein Weilchen rumrecherchiert, und es immer noch nicht verstanden...

Heute morgen funktioniertes es übrigens plötzlich ohne dass ich an entsprechenden Codestellen was geändert hätte...

Gruß,
Markus 🙂

14.09.2006 - 14:35 Uhr

Ja, die Idee hatte ich auch bereits, das hatte auch keinen Erfolg...

14.09.2006 - 13:47 Uhr

Moin zusammen,

ich habe ein kleines Problem, bei dem ich irgendwie nicht weiterkomme - vermutlich aus eigener Blödheit. Würde mich freuen, wenn mir jemand den sprichwörtlichen Schlag auf den Hinterkopf geben könnte.

Hier ist mein Code:

        private void frmMain_Load(object sender, EventArgs e)
        {
            lblDatum.Text = DateTime.Now.ToShortDateString();
            lblZeit.Text = DateTime.Now.ToLongTimeString();
            txtEIN.Focus();
        }

Die Datums- und Zeitangaben funktionieren auch ohne Probleme - nur die txtEIN.Focus()-Anweisung nicht.

Zusatzinfo: Es laufen zeitgleich vier Timer, die in unterschiedlichen Intervallen verschiedene Labels ändern...

Kann mir jemand helfen?

Gruß,
Markus 🙂

Achja, bevor ichs vergesse - die Suche im Forum hat nicht wirklich weitergeholfen 🙁

06.09.2006 - 14:27 Uhr

Moin,

ich habe nahezu eins zu eins den Code aus dem o.g. Codeproject-Beispiel übernommen.

Und was mache ich dann: Das Programm soll nur als kleines Tool für einen Kollegen dienen. Der erste Programmstart legt die Einträge in der Registry an und lässt dann das Programm im Systray verschwinden. Per Klick in das Kontextmenü wird das Programm erneut aufgerufen. Es wird geprüft ob bereits eine Instanz des Programms vorliegt. Wenn ja: Bestimmtes Fenster zeigen und irgendwas anstellen.
Beim Beenden des Programms über das SystrayIcon werden die Einträge wieder entfernt...

@Schattenkanzler: Ich weiß jetzt nicht ob dir das geholfen hat, aber mehr kann ich dazu hier auch nicht schreiben...

@Herbivore: Vielen Dank für den Tipp, jetzt weiß ich wenigstens wonach ich suchen muss!

Viele Grüße,
Markus 🙂

05.09.2006 - 14:18 Uhr

Moin,

ich krame diesen uralten Thread mal wieder hervor.

Ich bin soweit, dass ich lustich Einträge ins Kontextmenü hinzufügen kann, die obendrein auch noch den gewünschten Effekt haben.

ABER: Die Einträge erscheinen im falschen Kontextmenü. Es gibt im Windows-Explorer ja zwei verschiedene Arten von Kontextmenüs: Nämlich die, die erscheinen, wenn man auf Dateien oder Ordner klickt, und die, die erscheinen, wenn man neben Dateien und Ordner klickt.
Meine Einträge erscheinen im Kontextmenü von Dateien und Ordnern, aber sie sollen erscheinen wenn ich ins Kontextmenü neben den Dateien klicke...

Kann mir jemand helfen?

Viele Grüße,
Markus 🙂

09.05.2006 - 15:45 Uhr

Du hast richtig vermutet. =)

Danke für dem Schlag auf den Hinterkopf tilt 👍

09.05.2006 - 15:15 Uhr

Moin zusammen,

ich entwickle gerade eine kleine Anwendung für den Microsoft Pocket PC (Visual Studio 2005, .NET 2.0). Das ganze ist ein Projekt für die Uni. Klappt auch alles so wie ich mir das vorstelle. Naja - fast alles.

Zuerst wollte ich eine Schleifenvariable in einen String konvertieren:

for (int i = 1; i <= argAnzahl; i++)
    {
    // Statusanzeigen setzen
    pbRaeume.Value = i;
    string RaumNummer = i.ToString();
    lbRaueme.Text = "Räume: " + RaumNummer;
    ...

Geht nicht: ArgumentException in der Zeile

string RaumNummer = i.ToString();

Die Variable i hat zu diesem Zeitpunkt den Wert 1.

Nach elendier Rumprobiererei und Brechpunktsetzerei habe ich dann einfach mal einen neuen int-Wert erstellt in der Schleife (Kopiert aus der MSDN-Hilfe):

for (int i = 1; i <= argAnzahl; i++)
    {
    // Statusanzeigen setzen
    pbRaeume.Value = i;
    int x = 42;
    string strx = x.ToString();

    string RaumNummer = i.ToString();
    lbRaueme.Text = "Räume: " + RaumNummer;
    ...

Jetzt gibt das ne Exception in der Zeile

int x = 42;

und zwar ebenfalls eine ArgumentException.

Die Suchfunktion hat mich nicht weitergebracht, bei der Überprüfung der Ländereinstellungen habe ich nix auffälliges gefunden...

Ich hoffe ihr könnt helfen...

Viele Grüße,
Markus 🙂

02.12.2005 - 12:12 Uhr

Moin Moin,

danke für eure Hilfe - jetzt gehts - ich hatte etwas Angst vor RegEx und dachte es gäbe vielleicht einen anderen Weg - aber jetzt funktioniert's ja 😉

Viele Grüße,
Markus 🙂

02.12.2005 - 11:35 Uhr

Moin,

ich möchte mit String.Replace(sAlt, sNeu) einige Worte in einem Satz ersetzen. Es geht sich da um eine simple Übsersetzungsroutine.

Die Wortpaare sind in einer xml-Datei gespeichert, können jedoch in Groß- und Kleinschreibung im Text vorkommen.

Gibt es eine Möglichkeit die Ersetzung nicht CaseSensitiv durchzuführen, damit ich nicht den ganzen Text in LowerCase umwandeln muss?

Sorry falls das hier im Forum schon irgendwo steht - ich habs nicht gefunden...

Gruß,
Markus 🙂

28.11.2005 - 12:18 Uhr

Moin,

ich nochmal.

Mit folgendem Code aktualisiere ich die Aurichtung der Zellen:

			this.dgTable.TableStyles[0].GridColumnStyles[dgTable.CurrentCell.ColumnNumber].Alignment = HorizontalAlignment.Right;

Das DataGrid zeigt sie bloß leider immer noch linksbündig an. Kann mir da jemand helfen?

Gruß,
Markus 🙂

25.11.2005 - 14:23 Uhr

Moin nochmal,

die Eigenschaft der Spalten zu aktualisieren klappt mittlerweile. Ich hatte einen Denkfehler in der Programmlogik =).

Ein Problem habe ich noch: Es interessiert das DataGrid nicht die Bohne welchen TextAlign die Spalte hat. Wie bringe ich das denn dazu das zu übernehmen?

Gruß,
Markus 🙂

25.11.2005 - 12:21 Uhr

Original von Programmierhans

Original von Xqgene
egal woher die daten kommen

Es ist eben nicht egal !!! Denn wenn das DataGrid keine TableStyles definiert hat, dann definiert es sich die TableStyles selber sobald die DataSource / DataMember zugewiesen wird.

Deshalb kann erst auf TableStyles[0] zugegriffen werden nachdem die Daten gebunden sind... ausgenommen die TableStyles werden "von Hand" definiert...

Moin,

ich habe ein ähnliches Problem.

mit folgendem Code setzte ich die Datenquelle meines DataGrids:

dgTable.SetDataBinding(dsDataSet, "Table");

Jetzt möchte ich die Textausrichtung in einer Spalte ändern (Im Grunde wollen wir hier alle das gleiche - der eine will ne Spalte ausblenden, der andere will sie breiter machen - ich will die Textausrichtung ändern 😁 )

Wenn ich nun direkt nach oben genanntem Befehl einen Brechpunkt setze, hat das Program weder automatisch einen TableStyle angelegt und schon gar keine GridColumnStyles - folglich kann ich auch nicht darauf zugreifen.

Zur Entwicklungszeit anlegen kann ich die Styles auch nicht, da nicht klar ist wieviele Spalten die Tabelle haben wird.

Hoffe es kann mir jemand helfen...

Gruß,
Markus 🙂

18.11.2005 - 13:58 Uhr

Ich hatte bei google nach NAnt-Script gesucht... grummel - Danke für den Tipp mit der richtigen Suchmaschine gg !!

Gruß,
Markus 🙂

18.11.2005 - 13:47 Uhr

OK - das mit dem -r *.cs habe ich auch schon gesehen - nu besteht unsere Anwendung aus 18 Projekten mit teilweise über 30 cs Dateien... - das ist ein wenig Mühselig...

hat jemand von euch einen Tutorial für dieses NAnt? - google brachte ganze 2 (!) Treffer von denen bei einem das Wort NAnt gar nicht und beim andern mit irgendwas speziellem vorkam...

Gruß,
Markus 🙂

Nu aber: Ich arbeite unter Windows.

Ziel des Spiels ist es aber die Anwendung auch unter Linux zum laufen zu bekommen. Unser Praktikumsbetreuer meint wir sollen die unbedingt mit Mono kompilieren - obwohl eine mit VS2003 kompilierte Anwendung (wenn sie nicht auf die Windows-API zugreift) doch eh unter Linux (mit Mono) lauffähig sein sollte oder?

18.11.2005 - 12:59 Uhr

Danke für die fixe Antwort - stelle fest, dass auf der mono-Webseite die rechte Hand nicht weiß was die linke programmiert... Nunja.

Damit komme ich zur nächsten Frage: Wie lasse ich meinen Code "durch Mono rauschen"? - Ich habe das installiert aber entweder ich bin blind oder zu blöd ein anständiges "How To" - oder ein "wie kompiliere ich ein C#-Projekt oder eine C#-Solution mit Mono" zu finden... (auch mono --help) - oder (mcs --help) ist nicht soo wahnsninnig aufschlussreich...

Gruß,
Markus 🙂

18.11.2005 - 12:06 Uhr

Moin zusammen,

nach langer, erfolgloser myCSHARP. und google-Recherche habe ich mich entschlossen, einfach mal zu fragen. Kostet ja nix.

Also. Unser Praxissemesterbetreuer stellt die Aufgabe unsere Anwendung mit Mono zu kompilieren, bzw unter Mono zu benutzen. Unsere Anwendung ist eine WindowsApplication die sehr intensiv Gebrauch macht von Windows.Forms. Auf der Wenseite von mono habe ich nun gelesen, dass Mono erst ab der Version 1.2 (Erscheinungstermin Q1/2006) Windows.Forms 1.1 unterstützt.

Daher hier meine Frage: Gibt es eine Möglichkeit, die gesamte Solution (knappe 20 Projekte) in GTK# umzuwandeln um sie dann unter Mono benutzen zu können?

Viele Grüße,
Markus 🙂

18.11.2005 - 08:53 Uhr

Äh hmmm jaaaa vordenkopfklatsch X(

Da hast du wohl recht. Wie peinlich, dass ich da nicht von selbst drauf gekommen bin...

Viele Grüße,
Markus 🙂

16.11.2005 - 13:56 Uhr

Moin,

bis jetzt habe ich die Progressbar einfach genau so positioniert, dass sie genau über einem StatusBarPanel liegt - so dass es so aussieht, als sei das Panel die ProgressBar - aber ich dachte mir das muss auch eleganter gehen.
Da man meine Anwendung aber nicht resizen kann ist das auch nich sooo elementar 🙂

Gruß,
Markus 🙂

16.11.2005 - 11:19 Uhr

Moin,

danke für die Antwort,
dann werde ich das erstmal so lassen wie's ist - das bringt mir keinen Nennenswerten Vorteil...

Gruß,
Markus 🙂

15.11.2005 - 15:56 Uhr

Moin zusammen,

da mir die Suchfunktion nicht weitergeholfen hat hier meine Frage:

Kann ich einem StatusBarPanel direkt eine Progressbar zuweisen? Bislang habe ich sie immer genau dadrüvber positioniert - das erscheint mir aber ein wenig "unschön"...

Gruß,
Markus 🙂

15.11.2005 - 12:51 Uhr

Moin Svenson,

danke für deine Antwort.

Ich werde da noch ein wenig rumprobieren...

Ich antworte erst jetzt, da ich noch einiges anderes im Kopf hatte die vergangenen Tage...

Viele Grüße,
Markus 🙂

10.11.2005 - 14:31 Uhr

Moin zusammen,

folgendes Problem:
Ich will mit meiner Software ein DocBook-Dokument erstellen. DocBook ist ein ganz weit entfernter Verwandter von HTML - also ebenfalls eine XML Struktur.

Der Haken dabei: Die Struktur ist natürlich nicht immer die selbe. Wie ich ein XML-File in ein Objekt lese und umgekehrt ist bis jetzt klar, aber nur wenn das Dokument immer die selbe Struktur hat.

Wie verhält sich das nun bei einer variablen Struktur? D.h. Ich habe zwar eine begrenzte Anzahl an verfügbaren Elementen, aber die sind fast beliebig ineinander verschachtelbar...

Zwei Beispiele für solche Dateien, die ich mit einer einzigen Klasse erstellen muss:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<article>
	<title>REPORT TITEL</title>
	<section>
		<title>KAPITEL EINS</title>
		<para>Dies ist jetzt irgendwelcher BlahBlah...</para>
		<para>Dies auch...</para>
		<para>Und das erst recht. Ach übrigens: Franz jagt im komplett verwahrlosten Taxi quer durch Bayern...</para>
		<section>
			<title>Eins</title>
			<para>Hier kommen jetzt mal die ganzen lustichen Contentelemente</para>
			<section>
				<title>SCREENSHOT</title>
				<screenshot>
					<graphic fileref="bild.png"/>
				</screenshot>
			</section>
			<section>
				<title>TABELLE</title>
				<table>
					<title>Tabellenname</title>
					<tgroup cols="2">
						<tbody>
							<row>
								<entry>Spalte 1 Zeile 1</entry>
								<entry>Spalte 2 Zeile 1</entry>
							</row>
							<row>
								<entry>Spalte 1 Zeile 2</entry>
								<entry>Spalte 2 Zeile 2</entry>
							</row>
						</tbody>
					</tgroup>
				</table>
			</section>
		</section>
	</section>
</article>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<article>
	<title>REPORT TITEL</title>
			<section>
				<title>TABELLE MIT HEADER</title>
				<table>
					<title>Tabellenname</title>
					<tgroup cols="2">
						<thead>
							<row>
								<entry align="center">SPALTE EINS</entry>
								<entry align="center">SPALTE ZWEI</entry>
							</row>
						</thead>
						<tbody>
							<row>
								<entry>Spalte 1 Zeile 2</entry>
								<entry>Spalte 2 Zeile 2</entry>
							</row>
							<row>
								<entry>Spalte 1 Zeile 3</entry>
								<entry>Spalte 2 Zeile 3</entry>
							</row>
						</tbody>
					</tgroup>
				</table>
			</section>
			<section>
				<title>ENUMERATION</title>
				<para><simplelist>
						<member>Und das erst</member>
						<member>Und das</member>
					</simplelist></para>
			</section>
			<section>
				<title>MOVIE</title>
				<mediaobject>
					<videoobject>
						<videodata fileref="video.avi"/>
					</videoobject>
				</mediaobject>
			</section>
		</section>
	</section>
</article>

Schonmal vielen Dank für die Hilfe!

Gruß,
Markus 🙂

02.11.2005 - 13:50 Uhr

Moin,

wichtig bei XML ist, dass jede XML-Datei nur ein Elemet auf der Root ebene haben darf. D.h. deine XML datei könnte z.B. so aussehen:

<?xml version="1.0" encoding="utf-8"?>
<Configurations>
  <Configuration name="Config1">
    <Name>Default Configuration</Name>
    <Destination>xxxxx</Destination>
    <Host>asssf</Host>
  </Configuration>
  <Configuration name="Config2">
    <Name>Default Configuration</Name>
    <Destination>xxxxx</Destination>
    <Host>asssf</Host>
  </Configuration>
</Configurations>

Dann kannst du ganz simpel eine Config daranhängen...

27.10.2005 - 15:13 Uhr

Jetzt hab ich das verstanden. Danke svenson!

27.10.2005 - 14:41 Uhr

Moin zusammen,

Folgendes Problem: Ich habe eine ArrayList, in der sind string[3] Arrays enthalten. Ich möchte nun diese Arrays nach dem ersten Element (Index 0) sortieren.

Bei der Forumssuche habe ich zwar was über eine "Comparer Klasse" gefunden, aber ich steh ziemlich auf dem Schlauch was die genaue Anwendung angeht. Die Hilfe im VS hat mir auch nicht wirklichweitergeholfen...

Kann mir jemand helfen?

Gruß,
Markus 🙂

21.10.2005 - 08:32 Uhr

Da hast du recht,

unsere CReportData Klasse ist in ihrer Struktur allerdings ein wenig komplizierter - so das man vielleicht darüber nachdenkt der Methode den Rückgabewert CReportData zu geben - allerdings gabs ja (wie schon erwähnt) diesen "wahnsinnig wichtigen" Grund dafür, das ich das anders gelöst habe 😁

20.10.2005 - 23:21 Uhr

Moin svenson,

jup - danke für die Tipps - es gab irgendeinen wahnsinnig wichtigen Grunddafür dass diese Methoden den Rückgabetyp "void" bekommen hat - ich weiß bloß nicht mehr welcher =)

Gruß,
Markus 🙂

20.10.2005 - 16:20 Uhr

Es macht dasselbe.
Das geht ja garnicht.

@svensson: Vielen Dank für die Hilfe! 🙂

20.10.2005 - 15:55 Uhr

Dein Beispiel leuchtet mir ein. Jedoch nochmal zur Verdeutlichung:

Variante EINS:

public override void ComputeReport (CDocumentStatus dsStatus, string sSource, ref string sDestination, string sSettings, CReportData crReport)
	{
		try
		{
			crReport.AddChapter("Neues Kapitel");
			crReport.CurrentChapter.AddHeadline("Überschrift");
			crReport.CurrentChapter.AddPlaintext("Blah tüt schwafel...");
		}
		catch
		{
			throw new ReGen.CReGenInputDriverException("Source file contains invalid data.");
		}
	}

Das übergebene Object crReport ist jetzt auch im Hauptprogramm entsprechend geändert!

Variante ZWEI:

public override void ComputeReport (CDocumentStatus dsStatus, string sSource, ref string sDestination, string sSettings, CReportData crReport)
	{
		try
		{
			StreamReader InputStream = new StreamReader(sSource);
			BinaryFormatter BinaryInput = new BinaryFormatter();
			crReport = ((CReportData)(BinaryInput.Deserialize(InputStream.BaseStream)));
			InputStream.Close();
		}
		catch
		{
			throw new ReGen.CReGenInputDriverException("Source file contains invalid data.");
		}
	}

Das übergebene Object crReport ist im Hauptprogramm immer noch leer.

Habe ich dich eben richtig verstanden, dass

crReport = ((CReportData)(BinaryInput.Deserialize(InputStream.BaseStream)));

im endeffekt das selbe macht wie

crReport = new CReportData();

?!

20.10.2005 - 15:28 Uhr

Versuchs mit

if (auswahl < "1" && auswahl > "4")
20.10.2005 - 15:18 Uhr

Moin,

schonmal danke für die Antworten.
Bevor wir das hier ins Forum gestellt haben haben wir das ding auf Herz und Nieren geprüft. Der Report wird vollständig gelesen, bevor die Methode beendet wird.
Thema "Neuerstellung des Objekts": Wir haben das Objekt auch bereits von Hand in der Methode neu erstellt...

crReport = new CReportData();

...und anschließend ebenfalls von Hand aufgefüllt, die Daten standen danach komplett auch außerhalb der Methode zur Verfügung...

Gruß,
Markus 🙂

20.10.2005 - 14:44 Uhr

Moin zusammen,

ich erstelle gerade (zusammen mit Apoplex) eine Software mit der man verschiedene Berichte aus bestimmten Rohdaten generieren kann.
Nun wollen wir diese Berichte auch speichern. Der Speichervorgang funzt hervorragend, nur das Wiedereinlesen der Daten nicht. Folgende Methode benutzen wir:

public override void ComputeReport (CDocumentStatus dsStatus, string sSource, ref string sDestination, string sSettings, CReportData crReport)
	{
		try
		{
			StreamReader InputStream = new StreamReader(sSource);
			BinaryFormatter BinaryInput = new BinaryFormatter();
			crReport = ((CReportData)(BinaryInput.Deserialize(InputStream.BaseStream)));
			InputStream.Close();
		}
		catch
		{
			throw new ReGen.CReGenInputDriverException("Source file contains invalid data.");
		}
	}

Diese Methode bekommt ein CReportData Objekt übergeben und befüllt es mit den Daten aus der eingelesenen Datei. Auch das funktioniert, der Report wird vollständig und korrekt eingelesen.
Wenn das Programm diese Methode allerdings wieder verlässt, ist auch crReport wieder leer.
Offensichtlich wird in der dritten Zeile des TRY-Blocks eine Referenz auf den InputStream erzeugt. Mit dem Verlassen der Methode ist natürlich der InputStream ungültig. Trotzdem sollte doch eigentlich der dazugehörige Speicherbereich nicht freigegeben werden, da crReport immer noch darauf zeigt? 🤔

Dazu ist noch folgendes anzumerken. Füllen wir in dieser Methode das Objekt von Hand mit irgendwelchen Beispieldaten, ohne diese aus einer Datei zu laden, wird der crReport korrekt zurückgegeben. =)

Und nun stehen wir hier ziemlich auf dem Datenbus - und wissen nicht weiter. Irgendwelche Ideen woran das liegen könnte?

Gruß,
Markus 🙂

17.10.2005 - 11:18 Uhr

Moin Shabi,

Hat deine Form einen Standartkonstruktor der ungefähr so aussieht?

private myForm () : base()
{
    InitializeCompontent();
}

Gruß,
Markus 🙂

12.10.2005 - 17:16 Uhr

🙂

Schön, dass es dir geholfen hat. Ich habe den selben Karriereweg wie du (VisualBasic6 -> C#) eingeschlagen und programmiere jetzt seit guten 4 Wochen in C#...

Gruß,
Markus 🙂

12.10.2005 - 12:20 Uhr

Moin,

in dem Ordner wo dein VisualStudio installiert ist sollte es irgendwo unter Common einen Ordner Graphics geben - schau da mal nach, da ist eigentlich alles drin was man so braucht...

Bei mir (VS2003) liegt er unter [PROGRAMME][VS2003]\Common7\Graphics

Gruß,
Markus 🙂

11.10.2005 - 14:52 Uhr

Nochwas ist mir und meinem Kollegen aufgefallen:

mit

public static Form1 FrmForm1 = new Form1();

erstellst du eine komplett neue Instnz der Form1, die mit der bereits angezeigten nichts zu tun hat.
Ich nehme an, dass du Form2 aus Form1 heraus aufrufst, wenn Form1 die Startform ist. Wenn dem so ist, dann kannst du aus Form2 heraus über

((Form1)this.ParentForm).SetStatusbarpanel("Irgendwas");

auf deine Methode in Form1 zugreifen.

Gruß,
Apoplex und Spontifixus

11.10.2005 - 14:40 Uhr

Moin,

versuch mal das Panel über den Index anzusprechen:

StatusBar1.Panels[0].Text = "Hallo Welt";

Gruß,
Markus 🙂

27.09.2005 - 13:01 Uhr

Zusatz:

Er kompiliert zwar, aber mit folgendem Hinweis:
Warnung: Die Abhängigkeit 'ReGenTools, Version=1.0.2096.16007, Culture=neutral' in Projekt 'ReGen GUI' kann nicht in das Ausführungsverzeichnis kopiert werden, da sie den Verweis 'ReGenTools, Version=1.0.2096.21524, Culture=neutral' überschreiben würde.

Diesen hiniweis bringt er in allen Projekten in denen ich die entsprechende DLL refernziert...

27.09.2005 - 10:18 Uhr

Moin herbivore,

ich habe versucht das folgendermaßen zu lösen:

[...]
private System.Resources.ResourceManager rmResources;
private System.Windows.Forms.StatusBarPanel StatusBarLight = null;
[...]
Konstruktor(System.Windows.Forms.StatusBarPanel argStatusBarLight)
{
rmResources = new System.Resources.ResourceManager(this.GetType());
StatusBarLight = argStatusBarLight;
}
Methode()
{
StatusBarLight.Icon = (System.Drawing.Icon)rmResources.GetObject("light_r.ico", System.Globalization.CultureInfo.CurrentCulture);
}

Das wird anstandslos kompiliert - allerdings taucht dann in der Methode() folgender Laufzeitfehler auf:

Laufzeitfehler hat geschrieben:
Eine nicht behandelte Ausnahme des Typs 'System.Resources.MissingManifestResourceException' ist in mscorlib.dll aufgetreten.

Zusätzliche Informationen: Für die angegebene Kultur (oder die neutrale Kultur) in der Assembly konnten keine Ressourcen gefunden werden. Stellen Sie sicher, dass 'CDocumentStatus.resources' richtig in die Assembly 'ReGenTools' eingebettet wurde.
baseName: CDocumentStatus locationInfo: ReGen.CDocumentStatus resource file name: CDocumentStatus.resources assembly: ReGenTools, Version=1.0.2096.16364, Culture=neutral, PublicKeyToken=null

*Bahnhof* =)

Gruß,
Markus 🙂

PS: Die Datei images.resx wurde mit Lutz Roeders .NET Resourcer v4.1.0.0 erstellt

26.09.2005 - 20:10 Uhr

Moin,

sbStatusLight.Icon = rmResource("light_r.ico")

wobei sbStatusLight als System.Window.Forms.StatusBarPanel und rmResource als System.Resources.ResourceManager deklariert ist.

Als Fehlermeldung spuckt er aus, dass er einer System.Drawing.Icon eigenschaft kein Objekt zuweisen kann...

Ich hab den genauen Code auf der Arbeit - kann ihn morgen ab 0900 zur Verfügung stellen - Aber so in etwa sieht das aus...

Viele Grüße,
Markus 🙂

26.09.2005 - 15:22 Uhr

Moin zusammen,

ich habe in meiner Anwendung eine Statusleiste in der eine kleine Ampel integriert ist.
Diese Ampel braucht drei verschiedene Icons um die Phasen "Rot", "Gelb" und "Grün" anzuzeigen.

Ich möchte diese Icons nun gerne mit in das Programm einbinden ohne sie als Dateien mitzuliefern. Problem dabei: Das Windows.Forms.StatusBarPanel wird einer Klasse in einer DLL übergeben die dann die Icon Eigenschaft setzen soll.

Ich habe es mit einer *.resx Datei versucht - das ging solange gut wie die Methode zum Ändern des Icons eine Methode der Form-Klasse war auf der sich die Statusbar befindet.
Bei einer ImageList mosert er das er ein System.Drawing.Image nicht zu einem System.Drawing.Icon konvertieren könne...

Jemand ne Idee wie das zu lösen ist? Vielen Dank!

Gruß,
Markus 🙂

22.09.2005 - 12:16 Uhr

Moin,

danke für die Antworten - so funktioniert das!

Viele Grüße,
Markus 🙂

22.09.2005 - 11:40 Uhr

Moin zusammen,

gibt es eine einfache Methode an den Dateipfad einer mittels OpenFileDialog ausgewählten Datei zu gelangen?

Gruß,
Markus 🙂

21.09.2005 - 14:46 Uhr

Hallo Christoph,

Vielen Dank für deine zügige Hilfe! Jetzt klappt auch bei mir.
Kannst du mir so lerneffektmäßig beschreiben woran's gelegen hat? - Außer der inkonsistenz im XML-File (fehlende <contents>-Tags...)

Viele Grüße,
Markus 🙂

21.09.2005 - 13:57 Uhr

Nein,

Umlaute sind da keine drin - lediglich ein Backslash bei der Pfadangabe beim "watermark" - aber kommt doch eigentlich erst nach der <chapters> Tabelle...
EDIT: Wenn ich nur noch Buchstaben und Zahlen einsetze klappts auch nicht...

21.09.2005 - 12:58 Uhr

Moin,

Fehlermeldungen gibt's keine - Die Daten sind einfach nicht in der erzeugten Instanz der Klasse enthalten.
Die Klasse sieht aus wie folgt:
Sie wurde wie gesagt von xsd.exe erstellt und von mir unverändert übernommen...

//------------------------------------------------------------------------------
// <autogenerated>
//     This code was generated by a tool.
//     Runtime Version: 1.1.4322.2032
//
//     Changes to this file may cause incorrect behavior and will be lost if 
//     the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------

// 
// This source code was auto-generated by xsd, Version=1.1.4322.2032.
// 
using System.Xml.Serialization;


/// <remarks/>
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public class config {
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("preferences", typeof(configPreferences), Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    [System.Xml.Serialization.XmlElementAttribute("chapters", typeof(configChaptersChapter[]), Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    [System.Xml.Serialization.XmlElementAttribute("owner", typeof(configOwner), Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public object[] Items;
}

/// <remarks/>
public class configPreferences {
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string title;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string watermark;
}

/// <remarks/>
public class configChaptersChapterContent {
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string id;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string data;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string movies;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string images;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlTextAttribute()]
    public string Value;
}

/// <remarks/>
public class configChaptersChapter {
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("content", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)]
    public configChaptersChapterContent[] content;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string id;
}

/// <remarks/>
public class configOwner {
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string name;
}

so lade ich das XML File:

// *******************************************
// Read configuration File and sort the Report
// *******************************************
StreamReader  sr  = new StreamReader(@"D:\liverconfig.xml");
XmlTextReader xtr = new XmlTextReader(sr);
config xmlConfig  = (config) new XmlSerializer(typeof(config)).Deserialize(xtr);

uns so sie das Objekt aus direkt nach dem es die o.g. drei Codezeilen durchlaufen hat:

Viele Grüße,
Markus 🙂