Laden...
Avatar #avatar-1931.jpg
Friedel myCSharp.de - Member
Nähe Kassel / Hessen Dabei seit 19.08.2005 830 Beiträge
Benutzerbeschreibung

Forenbeiträge von Friedel Ingesamt 830 Beiträge

27.06.2007 - 09:33 Uhr

Hallo DaRula,

was du meinst sind sogn. Verben.
Als Einstieg in das durchaus komplexe Thema der Designzeit Komponenten der Link auf die MSDN Link

Gruss
Friedel

27.06.2007 - 07:59 Uhr

Wenn der Hund nicht gesch... hätte, hätte er den Hasen gekriegt... 🙂

Friedel

26.06.2007 - 16:20 Uhr

Dann würde ich die Methode aber statisch machen, dann kann man sich das Erzeugen einer "unnützen" Instanz sparen.

Gruss
Friedel

26.06.2007 - 15:21 Uhr

newsunflower,

versuch mal das:


T obj = (T)typeof(T).GetConstructor(new Type[] { typeof(int) }).Invoke(new object[] { 5 });

Gruss
Friedel

26.06.2007 - 15:04 Uhr

Hallo Wax,


void treeView1_MouseDown(object sender, MouseEventArgs e) {
	TreeViewHitTestInfo info = this.treeView1.HitTest(e.Location);
	if(info.Location == TreeViewHitTestLocations.RightOfLabel 
	 || info.Location == TreeViewHitTestLocations.None)
		this.treeView1.SelectedNode = null;
}

dient als Beispiel.

Gruss
Friedel

25.06.2007 - 20:42 Uhr

Hallo Red_Wraith,

ist reine Geschmacksache, aber wenn ich einen Stream nutze, nutze ich diesen so:


using(FileStream stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite)){
   ...
}

Dann wird dieser, wie oben bereits erwähnt, geschlossen und zerstört.
Was ich damit sagen will: Wenn ich deine Klasse nutzen würde und ich könnte diese in ein using packen fände ich das sehr praktisch. Dazu muss die Klasse nur die IDisposable-Schnittstelle implementieren.

Gruss
Friedel

25.06.2007 - 20:33 Uhr

Original von herbivore
..., aber ich empfinde solche Interfaces als sehr lästig. Die sind einfach viel umständlicher zu bedienen, als wenn man frei editieren kann.
herbivore

Da hast du sicher recht herbivore, aber nur wenn man SQL kann...

Hallo telly,

ich finde aber auch die Art mit den Button und zusammenklicken nicht so toll. Die Probleme mit dem Editieren der Filter hast du ja schon genannt. Ein weiteres großes wird sicherlich die Verknüpfungen der Filter untereinander sein, oder wie willst du AND bzw. OR darstellen (man müsste das ganze Filterobjekt auf der Oberfläche verschieben können).
Je nach Komplexität der Abfragen wird die Oberfläche sehr voll und dadurch unübersichlich.

Ein anderer Ansatz:
Zwei Tabs.
Auf einem wählt der User die Spalten die er sehen möchte, bspw. via zwei Listen,
auf der anderen bietest du dem User erneut alle vorhandenen Spalten an. Hat der User eine Spalte markiert, drückt er den Button Filter hinzufügen, Editor für den Filter erscheint, User erstellt den Filter gemäß der Oberfläche (Combo für Operator, Filterwert und evtl. eine zweite Textbox für den zweiten Filterwert einer BETWEEN-Abfrage). Ausserdem kannst du dem User die Möglichkeit bieten, mit Hilfe einer DropDown-Combo, oder ähnlichem die Werte, welche in der DB vorhanden sind zu wählen.
Nachdem der Filter erstellt ist, sortierst du diesen in einen Tree unter dem entsprechendem Knoten (z.B. Name der Spalte, welche gefiltert wird) ein. Mit Drag&Drop realisierts du die Verknüpfungen, z.B. in dem du einen Filter auf den anderen legst, und mit einem Dialog nach der Verknüpfung fragst, oder sowas.

Gruss
Friedel

25.06.2007 - 20:16 Uhr

Hallo Lecrell,

habe es nicht ausprobiert, aber versuch mal diesen Link: hier

Gruss
Friedel

19.06.2007 - 11:39 Uhr

Hallo,

ob man es glaubt, oder nicht! Am schnellsten geht es mit dem SqlCeResultSet.


using (SqlCeCommand insertCommand = connection.CreateCommand()) {
	insertCommand.CommandText = "Samples";
	insertCommand.CommandType = CommandType.TableDirect;

	using (SqlCeResultSet resultSet =
		insertCommand.ExecuteResultSet(ResultSetOptions.Updatable)) {
		SqlCeUpdatableRecord record = resultSet.CreateRecord();

		string emptyString = streamReader.ReadLine();

	        int rowCounter = 0;

		while (streamReader.Peek() > -1) {
			string line = streamReader.ReadLine();
			string[] valueArray = line.Split(seperator);

			DateTime time = Convert.ToDateTime(valueArray[0]);
			double ms = Convert.ToDouble(valueArray[1]);
	        long ticks = (long)(ms * 10000);
			long timeValue = time.Ticks + ticks;

			record.SetInt64(1, timeValue);

			for (int i = 2; i < valueArray.Length; i++) {
		        	record.SetValue(i, valueArray[i]);
			}

			resultSet.Insert(record);

			if (rowCounter % 1000 == 0)
			        Console.WriteLine(rowCounter.ToString());
                        rowCounter++;
                }
        }
}

Vorher ca. 3 Stunden mit einzelnen InsertCommands jetzt die selbe Datenmenge in gut 3,5 MINUTEN =)

Gruss
Friedel

19.06.2007 - 08:24 Uhr

Hallo Maddy,

das Grid hat eine Methode HitTest, welches ein Objekt des Typs System.Windows.Forms.DataGridView.HitTestInfo zurückgibt. In diesen Infos steht alles was du brauchst.

Gruss
Friedel

15.06.2007 - 15:59 Uhr

Nochmals danke für eure Antworten.

Werde beides am WE mal testen und dann noch mal hier posten, ob eine, oder sogar beide Methoden funktioniert haben.

Gruss
Friedel

15.06.2007 - 11:10 Uhr

Im Prinzip geht es darum, "alte" Daten aus einem Vorgänger des jetzigen Programms zu übernehmen. Die Daten können in der alten Version in CSV exportiert werden, und sollen in der neuen Version eingelesen und im neuen Format (EmbeddedDB) gespeichert werden.
D.h. ja, die DB wird nur einmal von Grund auf neu aufgebaut. Danach wird diese nur noch Abgefragt.

Ist es evtl. möglich die Datenbank erst im Speicher zu erstellen und diese dann in einem "Rutsch" auf die Platte als File zu schreiben ? Dadurch würde man sich Millionen von Festplattenzugriffen ersparen.

Gruss
Friedel

15.06.2007 - 10:34 Uhr

Erstmal danke für die vielen Antworten.

@dr4g0n76

schon mal verschiedene Einstellungen auf der SQL-Datenbank ausprobiert? (Cache)?
Oder mehrere Statements mit ";" aneinander gehängt?

Nein, werde ich aber probieren...

Gibt's auf SQL CE stored procedures?

Gibt es leider nicht

Berücksichtigst Du die Daten nur einmal zu schreiben?

Machst Du in der Schleife auch nur einmal eine Connection auf und bearbeitest dann alle Daten in einem Rutsch?

Zeig mal die Schleife.


using (SqlCeConnection connection = new SqlCeConnection(ConnectionString)) {
        connection.Open();
        char seperator = ';';

        using (SqlCeCommand command = connection.CreateCommand()) {

        System.Globalization.NumberFormatInfo provider =
                new System.Globalization.NumberFormatInfo();
                provider.NumberDecimalSeparator = ".";
		provider.NumberGroupSeparator = ".";


		FileStream fStream = new FileStream(csvPath, FileMode.Open);
		using (StreamReader sr = new StreamReader(fStream, System.Text.Encoding.Default)) {
			string strLine = sr.ReadLine();
			string[] strArray = strLine.Split(seperator);

			Analog.AnalogChannel[] channels = new Analog.AnalogChannel[strArray.Length - 2];

			for (int i = 2; i < strArray.Length; i++) {
		        	string value = strArray[i];

				Analog.AnalogChannel channel = new Analog.AnalogChannel(value);
				Guid guid = channel.ID;
				channels[i - 2] = channel;

				command.CommandText = "INSERT INTO AnalogChannels (AnalogChannelsID, Name) VALUES" +
					"('" + guid.ToString() + "', '" + value + "')";
					command.ExecuteNonQuery();
                        }

			string emptyLine = sr.ReadLine();
			emptyLine = sr.ReadLine();

                        int rowCounter = 0;

			SqlCeCommand insertCommand = connection.CreateCommand();
			insertCommand.CommandText = "INSERT INTO AnalogSamples (AnalogChannelsID, " +
				"Ticks, Value) VALUES (@CID, @Ticks, @Value)";

                        insertCommand.Parameters.Add("@CID", Guid.NewGuid());
			insertCommand.Parameters.Add("@Ticks", long.MaxValue);
			insertCommand.Parameters.Add("@Value", Single.MaxValue);

			insertCommand.Transaction = connection.BeginTransaction();
			insertCommand.Prepare();

			while (sr.Peek() > -1) {
				string line = sr.ReadLine();
				string[] valueArray = line.Split(seperator);

				DateTime time = Convert.ToDateTime(valueArray[0]);
				double ms = Convert.ToDouble(valueArray[1]);
				long ticks = (long)(ms * 10000);
				DateTime timeValue = time.AddTicks(ticks);

				string[] vArray = new string[valueArray.Length - 2];

                                for (int i = 0; i < vArray.Length - 2; i++)
					vArray[i] = valueArray[i + 2];
					command.ExecuteNonQuery();
					for (int i = 0; i < vArray.Length; i++) {
        					double value = Convert.ToDouble(vArray[i]);
	        				insertCommand.Parameters[0].Value = channels[i].ID;
						insertCommand.Parameters[1].Value = timeValue.Ticks;
						insertCommand.Parameters[2].Value = value;

						insertCommand.ExecuteNonQuery();
						rowCounter++;
						if (rowCounter % 10000 == 0) {
							Console.WriteLine(rowCounter.ToString());
							insertCommand.Transaction.Commit(CommitMode.Deferred);
							insertCommand.Transaction = connection.BeginTransaction();
						}
					}
				}
                        }
                }
		connection.Close();
        }
}

@VizOne
Bulk Insert gibt es leider ebenfalls nicht

@FZelle
Vom Synchronisation Service von MS habe ich noch nie was gehört, um was handelt es sich dabei genau, kann dieser in einer Anwendung genutzt werden, oder ist dies ein eigenständiges Programm zum Synchronisieren von Datenbanken

@dr4g0n76

Musst Du das über ein selbstgeschriebenes Programm machen (davon ging ich ja aus) oder als Anwender?

Selber schreiben

@SeboStone
Du meinst sowas wie INSERT INTO BLA FROM ... IN "EXCEL8.0..."
Ich glaube das gibt es ebenfalls nicht in der CE Version

Mit der Bitte um weitere:
Danke für alle bisherigen Antworten 🙂

Gruss
Friedel

15.06.2007 - 08:16 Uhr

Hallo,

ich muss mit Hilfe des SQL Server CE eine CSV Datei von ca 1GB in eine entsprechende Datenbank importieren. Das klappt auch, aber der zeitliche Aufwand sprengt jeden Rahmen (ca 3 Stunden). Die Datenbank enthält eine Tabelle, mit 251 Spalten und rund 500.000 Zeilen, grob gerechnet also 125.500.000 Werte. Das Bereitstellen der Daten dauert natürlich auch seine Zeit, aber 90% geht für die Insert Anweisungen drauf.
Habe versucht mit Hilfe von Transaktionen den Vorgang zu beschleunigen, das bewirkt allerdings (fast) nichts.
Hat jemand eine Idee, einen Tip, oder einen Link zu einem Tutorial, wie ich effizient und schnell große Datenmengen in eine SQL CE Datenbank einfügen kann; habe selbst schon etliche Seiten im Netz abgeklappert, allerdings mit wenig Erfolg.

Danke

Gruss
Friedel

05.06.2007 - 11:07 Uhr

Hallo bird,

mach dir ein eigenes UserControl, welches Label, Radio, Radio, Radio beinhaltet, und adde das auf deine Form. Beachte dabei die Anchor und/oder Dock Eigenschaften der jeweiligen Controls.

Gruss
Friedel

01.06.2007 - 13:06 Uhr

Hallo Bibi1911,

erstell für jedes Item in der DropDown Liste einen eigenen EventHandler und nutze für den Button das ButtonClickedEvent.

Gruss
Friedel

01.06.2007 - 12:53 Uhr

Hat eingentlich schon jemand ein 1.1 Projekt in VS 2005 importiert? Muss man da was wichtiges beachten?

Schon häufig, geht (meistens) ohne Probleme...

Es ist danach ein 2.0 Projekt.
Der Code bleibt aber wie er ist. 2.0 ist fast komplett kompatibel zu 1.1.
An Stellen, die der Konvertierer nicht konvertieren kann, eben weil doch nicht zu 100% kompatibel, oder anderen Fehlern macht er dich darauf aufmerksam und du musst dein Projekt entsprechend anpassen.

Gruss
Friedel

01.06.2007 - 10:14 Uhr

Hallo eddieromm,

man kann keinen try/catch-Block verwenden um an den Fehler zu kommen, aber du kannst versuchen, den Debugger zu debuggen 🙂

Unter Properties für das Start-Projekt, welches deine Form enthält, welche beim Öffnen im Designer Probleme macht Einstellungen wie im Screenshoot zu sehen vornehmen und debuggen. Pfad gegebenenfalls anpassen.

Es öffnet sich ein 2. VS. In diesem die Form öffnen. Evtl. zeigt er die dann den Fehler genauer an.

Gruss
Friedel

01.06.2007 - 08:17 Uhr

Hallo Herrakles,


while(bgw.IsBusy)
{
   Application.DoEvents();
}
btnDownload.Enabled = true;

lass das evtl. mal aus der btnDownload_Click Methode weg.

Und wie herbivore bereits sagte:


do
{
  numRead = quelle.Read(buffer,0, buffer.Length);
  ziel.Write(buffer, 0, numRead);
  numCopied += numRead;
  worker.ReportProgress(Convert.ToInt32(numCopied / quelle.Length * 100));
} while (numRead>0 && !worker.CancellationPending);

Gruss
Friedel

30.05.2007 - 12:42 Uhr

Hallo,

ich denke euch wird nicht anders übrig bleiben, als euch mit dem RTF-Format auseinander zu setzen.

Als Start:
Öffnet MS Word, fürgt ein kleines Bild hinzu und speichert das Dokument als .rtf.
Diese Datei mit einem Texteditor öffnen (z.B. Notepad, Scintilla, usw.) und versuchen herausfinden, was für rft relevant ist und was Word hinzufügt.

Gruss
Friedel

24.05.2007 - 11:11 Uhr

Hallo Taylo,

ich würde eher meine Form so anpassen, dass keine fehlerhaften Abfragen an die Datenbank gesendet werden, da die Performance darunter (sehr wahrscheinlich) leidet. Lass es in Pflichtfeldern einfach nicht zu, dass der User nichts angibt und stelle evtl. deine Textboxen so ein, dass diese keine "falschen" Werte (string statt int) zulassen.

Gruss
Friedel

23.05.2007 - 22:25 Uhr

Hallo BennyF,

z.B. Microsoft eigene Produkte wie der SQL Server Express, oder die Filebasierte Datenbank SQL Server Compact Edition (nicht den vollen Funktionsumfang des "echen" Servers, z.B. keine gespeicherten Prozeduren), welche nichtmal installiert werden muss.

Gruss
Friedel

22.05.2007 - 15:19 Uhr

Hallo,

sowie ich das sehe, wird, wenn im Try-Block ein Fehler auftritt, auch im Catch-Block ein Fehler auftreten. Wo soll bei dem BasisTypen eine öffentliche Eigenschaft "Items" herkommen, welche beim Typen von targetControl nicht vorhanden ist ?

Gruss
Friedel

22.05.2007 - 12:25 Uhr

Hallo DaRula,

die Eigenschaft Items einer Listbox ist nunmal schreibgeschützt (hat keinen setter).
Du weisst aber doch, dass du ein Item hinzufügen willst, also nimm listBox.Items.Add(...).

Gruss
Friedel

21.05.2007 - 17:00 Uhr

Hallo bfo81,

schau dir evtl. mal den Designer von DevExpress an.

Link

Gruss
Friedel

21.05.2007 - 16:22 Uhr

Hallo kingBob,

angenommen, Frame wird deklariert in der Klasse Test. Diese Klasse liegt im Namespace TestNamespace. Also wird Frame wie folgt angesprochen:


TestNamespace.Test.Frame

Daraus ergibt sich, dass Blubb so angesprochen werden muss:


TestNamespace.Test.Frame.Blubb

Wenn du sowas willst:


Frame f = ...;
f.Blubb = ...;

musst du eine Eigenschaft hinzufügen :


public struct Frame {
  private Blubb blubb;

  public struct Blubb { }

  public Blubb Blubb {
    get { return this.blubb; }
    set { this.blubb = value; }
  }
}

Gruss
Friedel

19.05.2007 - 13:00 Uhr

Hallo gerhard,

schau dir mal das hier an. Hilft dir sicher weiter.

Gruss
Friedel

16.05.2007 - 10:06 Uhr

Hallo jan223,

probier mal


Form f = (Form)Form.FromHandle(handle);
f.BackColor;

Gruss Friedel

16.05.2007 - 09:20 Uhr

Original von Haggy
Hängt der pubkey nicht von der signierung ab? bzw. sollte die nicht eigentlich innerhalb der Majorversion gleich bleiben?

Hängt von der Signierung ab, aber ich kann nicht zu 100% sagen, ob der gleich bleibt.

Gruss
Friedel

16.05.2007 - 09:13 Uhr

Hallo FZelle,

wenn deine Antwort auf mich bezogen ist:

Eine Funktionalität (Eigenschaft) TopLevel würde das Interface auf einen Typ festlegen, welcher sinnvoll diese Eigenschaft besitzen muss. Ist in dem Beispiel mit Form und Control definitiv nicht der Fall, d.h. das Interface ist auf Formen festgelegt. Das ist in meinen Augen der falsche Ansatz für ein Interface.
Form besitzt Funktionalität TopLevel, Interface ist beschränkt auf Formen, Interface schreibt den Formen vor, dass diese eine Eigenschaft TopLevel haben müssen, welche sie sowieso haben. IMHO nicht toll.
Aber ein Interface wird meines Erachtens sowieso zu häufig für Dinge benutzt, welche ausschließlich zum Coden Vorteile bringen und nicht für das Design, oder die Wiederverwendbarkeit.

Gruss
Friedel

16.05.2007 - 09:01 Uhr

Die Version kannst du mit 2..., oder sogar ...* angeben, allerdings weiß ich nicht wie es sich mit dem PublicKey verhält.

Gruss
Friedel

16.05.2007 - 08:39 Uhr

Das meiste aus 1.0, wird unterstützt, so das man mit Sicherheit arbeiten kann, aber du hast recht, vergleichbar mit der Windows-Welt ist das nocht nichts.

Mono wird aber mit Sicherheit in Zukunft weiter ausgebaut, so ist z.B. auch in Planung, 3.0 zu implementieren... nützt dir aber jetzt nichts.

Gruss
Friedel

16.05.2007 - 08:29 Uhr

Hallo Haggy,

Original von Haggy
Nun kann ich aber System.Windows.Forms nicht mit Assembly.Load laden.

Generell geht das schon:


System.Reflection.Assembly a = System.Reflection.Assembly.Load(
  "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");

Oder was spricht dagegen ?

Gruss
Friedel

16.05.2007 - 08:20 Uhr

...dass ich mit einer Programmimersprache anfangen will, bei welcher ich mein Programm leicht auf Linux bzw Windows zum laufen bringen kann, nicht so wie C#.

???

MonoDevelop

Sollte doch recht einfach zu machen sein, oder?

Es geht "nichts" über C# 🙂

Gruss
Friedel

16.05.2007 - 08:06 Uhr

Hallo citizen.ron,

ich denke das nichts von dir genanntem richtig falsch ist, aber ich für meinen Teil bleibe lieber bei der 1.Methode mit dem Cast. Die (in diesem Fall) Eigenschaft in das Interface aufzunehmen finde ich sehr unschön, da dadurch das Interface "für immer" auf ein Objekt festgelegt ist, welches diese Eigenschaft besitzt. Bei einem anderem Typ macht es (wahrscheinlich) keinen Sinn, z.B. hier bei Form -> Control.
Und das eine Instanz sich selber in einer Eigenschaft zurückgibt widerspricht meinem Denken von OOP völlig.

Gruss
Friedel

08.05.2007 - 16:58 Uhr

Über ca. 75% Marc Medlock, ca. 25% der Andere, also wozu diese Finalshow 😁

Weil es vorher keiner mit Sicherheit sagen konnte (vermutlich).

Gruss
Friedel

08.05.2007 - 12:55 Uhr

Original von Friedel
Eine Form allerdings kann weder auf eine Form, noch auf ein Control gelegt werden. l

Ich meine damit nicht dieses reingehacke, sondern wirklich (wie geschrieben) Drag&Drop auf die Form/Control.

Gruss
Friedel

08.05.2007 - 08:12 Uhr

Hallo citizen.ron,

obwohl ich mir nicht 100%-ig sicher bin, gehe ich mal davon aus, dass das nicht geht. Der Designer hat als "Grundlage" immer eine Form, oder ein Control geöffnet, auf welches man andere Controls (Komponenten) legen kann. Eine Form allerdings kann weder auf eine Form, noch auf ein Control gelegt werden. Was soll diese Form also in der Toolbar.

Gruss
Friedel

27.04.2007 - 08:09 Uhr

Hallo janismac,

ein besseres Beispiel wirst du kaum finden 🙂

Gruss
Friedel

26.04.2007 - 10:11 Uhr

Hallo Jim Knopf,


System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
resources.GetString("controlName.Text");

Gruss
Friedel

25.04.2007 - 07:57 Uhr

Hallo kpatrickk,

enums können innerhalb einer Klasse stehen, aber sie müssen nicht. Wenn du sie ausserhalb einer Klasse deklarierst, sind sie über den Namespace zugreifbar, sobald eine Refernz auf die Assembly hinzugefügt wurde.

Gruss
Friedel

19.04.2007 - 08:37 Uhr

Hallo,

Von herbivore:
Du fragst doch den Bäcker, bei dem du Brötchen kaufst, auch nicht, was er mit dem Geld machst, das zu ihm gibst. Du hast einen in freier Entscheidung einen Grund ihm das Geld zu geben (nämlich die Brötchen) und dann gibt du ihm das Geld. Was dann damit passiert ist Sache des Bäckers.

Stimmt und stimmt nicht. Ich helfe dem Bäcker schließlich nicht beim Backen.

Bekommt der Bäcker die ganze Kohle, und ich, welcher vielleicht auch einen großen Anteil am Brötchen habe gehe komplett leer aus (keinen Lohn), frage ich mich, warum soll ich helfen backen? Damit der Bäcker aus Dankbarkeit noch mehr Kohle fürs Brötchen bekommt ? Mit Sicherheit nicht...

Gruss
Friedel

17.04.2007 - 17:08 Uhr

Hallo Borion,

generell hindert dich nichts daran, die dll einzubinden, ABER toll ist das nicht.
Fang alle Exceptions die in der Methode ChangeDataBase() auftreten können in deiner Anwendung, oder eben dort wo diese genutzt wird.
Meines Erachtens sollten (Hilf-)dlls keine Meldungen ausgeben, sondern nur Oberflächen (MainForm, Dialoge, usw.).

//edit: Also den catch weg... finally kann direkt ohne catch aufgerufen werden.

Gruss
Friedel

17.04.2007 - 13:44 Uhr

Hallo NetRookie,

denke mit dem genannten Thread kann man das selber lösen, aber naja...:
Form2 (Alle) ein Property verpassen, z.B. FirmenName

in Form1 das Alle.FormClosed-Event registrieren und in diesem den FirmenNamen von Form2 (Alle) abfragen (Alle.FirmenName).

Gruss
Friedel

17.04.2007 - 13:15 Uhr

Hallo soulbenda,

man kommt zwar per Reflection an das Event, aber leider kann man keinen EventHandler anhängen.
Soll diese Methode immer, also bei jedem Klick aufgerufen werden, oder nur wenn der "Browser" das erstemal angeklickt wird ?

Wenn dem so ist, hilft vielleicht das webBrowserControl.GotFocus Event mit einer globalen boolschen Variable.

Gruss
Friedel

17.04.2007 - 13:06 Uhr

MSDN: GUID

Zu XML wird man erschlagen, wenn man im Forum, oder bei Google danach sucht. Da musst du dir wohl noch ein paar Einschränkungen einfallen lassen.

Falls du eine GUID zur Designzeit brauchst, In Visual Studio 2005 (vielleicht auch bei 2003 ???) gibt es unter Tools -> Create GUID eine Editor.

Gruss
Friedel

17.04.2007 - 12:13 Uhr

Hallo RedVsRooster,

mir fehlt hier irgendwie der Zusammenhang zwischen XmlFiles und NewGuid(). Deshalb frage ich mich was in so einem Tutorial beschrieben sein soll ?
Vielleicht beschreibst du mal dein Problem...

Gruss
Friedel

17.04.2007 - 12:05 Uhr

Hallo,

ist zwar keine besonders schöne Lösung, aber es könnte klappen, wenn es sich um ein Bitmap handelt.


this.toolStripLabel.ImageTransparentColor = ((Bitmap)this.toolStripLabel1.Image).GetPixel(0,0);

Position des Pixels so anpassen, dass es auf ein weisses zeigt.

Gruss
Friedel

17.04.2007 - 11:58 Uhr

Hallo punkdevil,

wieso schießt man einen Process mit Kill ab, da läuft doch meines Erachtens was falsch. Lass den Prozess seine Arbeit machen, die Datei schliessen (file.Close, oder nutze using(File file = new File(...){...}) und sich dann beenden.

Gruss
Friedel

16.04.2007 - 08:16 Uhr

Hallo

Danke für die Antworten

@herbivore:
Sicherlich ein Weg, aber wie du bereits geschrieben hast, kein trivialer.

@dr4g0n76:
Das funktioniert einwandfrei und ist auch noch sehr simpel, allerdings hat es 2 große Nachteile. Zum einen funktioniert das "nur" für eine Assembly, also nicht über das gesamte Projekt und durch das zusätzliche kompilieren kann man nicht mehr mit Breakpoints arbeiten.

Trotzdem Danke.

Gruss
Friedel