Laden...

Forenbeiträge von punkdevil Ingesamt 992 Beiträge

14.01.2008 - 14:37 Uhr

Dank juetho, OEMperiod war das, was ich gesucht habe.

14.01.2008 - 13:51 Uhr

Hallo,

mich würde auch interessieren, welche Taste für '.' verwendet wird.

09.01.2008 - 12:48 Uhr

Hallo,

wie kann man den HotSpot eines Cursors setzen, den man mit:


new Cursor(IntPtr)

angelegt hat?

07.01.2008 - 12:49 Uhr

Hallo b-man,

du bekommst das Objekt, welches das Event gefeuert hat im Objekt sender geliefert.
Mit


TextBox tb = (TextBox)sender;

bekommst du die Textbox.

26.12.2007 - 10:36 Uhr

Hallo DDenjo,

das hier sollte dir helfen:
[FAQ] Kommunikation von 2 Forms

21.12.2007 - 08:56 Uhr

Eine Frage hätte ich noch:

Ich habe jetzt das objekt XmlSchema. Darin finde ich ein Element.
Wie kann ich durch das Schema navigieren, damit ich an alle Elemente gelange?

21.12.2007 - 08:11 Uhr

Hallo svenson,

bei mir gehts jetzt auch. Ich lese aus einem Stream und hatte vergessen dessen Position vorher auf 0 zu setzen. Sorry!

20.12.2007 - 16:16 Uhr

Hallo svenson,

mit XmlSChema.Read habe ich es schon versucht, bekomme dabei aber eine Exception:
System.Xml.XmlException : "Root element missing."

Ich möchte aus folgender XSD-Datei:


<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xsd:element name="rootElement">
		<xsd:annotation>
			<xsd:documentation>Beschreibung root</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="childElement1">
					<xsd:annotation>
						<xsd:documentation>Beschreibung childElement1</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:annotation>
							<xsd:documentation>Beschreibung childElement1</xsd:documentation>
						</xsd:annotation>
						<xsd:sequence>
							<xsd:element name="childElement11" type="xsd:string"/>
							<xsd:element name="test3" type="xsd:decimal"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="childElement2" minOccurs="0" maxOccurs="999">
					<xsd:annotation>
						<xsd:documentation>Beschreibung childElement2</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="childElement21" type="xsd:decimal"/>
							<xsd:element name="childElement22">
								<xsd:complexType>
									<xsd:sequence>
										<xsd:element name="test" type="xsd:decimal"/>
										<xsd:element name="test2" type="xsd:decimal"/>
									</xsd:sequence>
								</xsd:complexType>	
							</xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="childElement3" maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:documentation>Beschreibung childElement3</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="childElement31" type="xsd:integer"/>
							<xsd:element name="childElement32" type="xsd:time"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="childElement4" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>Beschreibung childElement4</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:attribute name="attribute41" type="xsd:string" use="required"/>
						<xsd:attribute name="attribute42" type="xsd:string" use="required"/>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="childElement5" minOccurs="0" maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:documentation>Beschreibung childElement5</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:attribute name="attribute51" type="xsd:string" use="optional"/>
						<xsd:attribute name="attribute52" type="xsd:string" use="optional"/>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>

folgende Baumstruktur erstellen:

rootElement
-childElement1
--childElement11
--test3
-childElement2
--childElement21
--childElement22
---test
---test2
-childElement3
--childElement31
--childElement32
-childElement4
--childElement41
--childElement42
-childElement5
--childElement51
--childElement52

(- bedeutet eine Ebene)

20.12.2007 - 15:55 Uhr

Hallo,

ich möchte eine XSD-Datei einlesen und die in der Datei definierte Struktur in einem TreeView darstellen.

Mein Problem ist das Einlesen der XSD-Datei.

Ich habe es mit einem Dataset probiert, dass hilft mir allerdings irgendwie nicht weiter, da ich dort nur flache Strukturen bekomme, aber keine beliebig tief geschachtelte Baumstruktur (bitte korrigieren, wenn ich falsch liege).

Dann habe ich es mit XmlReader versucht, bekomme damit aber eine Exception, dass kein Root-Element gefunden wurde.

Muss ich die XSD per Hand parsen oder gibt es in .Net Klassen, die mich dabei unterstützen?

Wer kann mir Tipps geben, wie ich an das Problem herangehe?

Vielen Dank.

06.12.2007 - 08:42 Uhr

TextAlign gibt nur die Ausrichtung von text innerhalb eines ToolStripItems an.

Um die ToolStripItems auszurichten muss du folgendes verwenden:


ToolStripItem.Alignment = ToolStripItemAlignment.Right;

Die Eigenschaft Alignemtn gibt es nicht im VisualStudio-Designer, du musst sie im Code setzen.

05.12.2007 - 11:32 Uhr

Nein, daran kann es nicht liegen.

Was meinst du mit "textbox drücken"?

05.12.2007 - 10:53 Uhr

Du musst den Fokus auf die TextBox setzen, sonst ist der Textcursor nicht sichtbar.

29.11.2007 - 08:27 Uhr

Man kann auch direkt den RTF-Code bearbeiten und dadurch z.B. Farben setzen. Dies geht sehr schnell und man muss nicht mit SelectedXXX arbeiten.

28.11.2007 - 10:13 Uhr

Hallo Ghosti,

also Worddokuemnte dürften nicht so einfach sein, da es ja ein Herstellerspezifisches Format ist. Ich kenne auch kein Steuerelement welches dies von sich aus könnte.

Du müsstest halt mal im Internet suchen, ob zu finden ist, wie eine Worddokument aufgebaut ist.

27.11.2007 - 09:34 Uhr

Hallo fraghenne,

du könntest in KeyDown überprüfen, ob SelectionStart == 1 (oder 0, musst du mal testen) ist und nur dann SelectedText auf "922" setzen

22.11.2007 - 08:45 Uhr

Wenn du in eine textbox schreibst musst du natürlich TextBox.Multiline = true setzen, sonst wird immer nur eine Zeile angezeigt.

22.11.2007 - 08:20 Uhr

Hallo habeKA,

die Zeile in der Schleife müsste eigentlich so aussehehen:


txtDatei.Text += line.Substring(9);

Was ist txtDatei für ein Objekt?

21.11.2007 - 08:49 Uhr

Sorry, aber ich habe immer noch keine richtige Vorstellung, wozu diese Felder da sind und wann, wie und wozu die Zusatzinformationen dargestellt werden.

Wenn die Felder keine eindeutige Bezeichnung im Text haben, bleibt dir wohl nichts anderes übrig als nach jeder Textoperation (TextChanged), den alten und neuen Text zu vergleichen und so die Änderung festzustellen.

20.11.2007 - 16:11 Uhr

Die Felder in der Textbox sind das eindeutige Zeichenketten oder dürfen sie auch mehrfach vorkommen?

Wenn der User also mit der Maus über ein solches Wort fährt, sollen die Zusatzinformationen angezeigt werden?

20.11.2007 - 15:44 Uhr

Hallo Danwe,

ich habe nicht richitg verstanden, was du machen willst.

Vielleicht helfen dir die Ereignisse SelectionChanged und TextChanged weiter.

Ansonsten beschreibe dein Problem mal etwas genauer, vorallem wo die Wörter herkommen, was das für Wörter und wie diese mit den "Zusatzinformationen" verknüpft sind.

19.11.2007 - 13:08 Uhr

Hallo Skukuyen,

das Problem hatte ich auch. Siehe hier: Form, Doppelklick auf Titelleiste

15.11.2007 - 16:56 Uhr

Hallo Danwe,

mit RichTextBox.GetCharIndexFromPosition(Point pt) bekommst du den Index des Zeichens, an der Position pt.

19.10.2007 - 14:25 Uhr

Hallo smichae,

der entscheidende Hinweis wurde dir schon von dN!3L gegeben:
[FAQ] Kommunikation von 2 Forms

18.10.2007 - 10:20 Uhr

Hallo Arthuro,

ich weiß jetzt nicht was dein Problem ist.


ausgabe.Text = vorname + nachname

16.10.2007 - 11:48 Uhr

Also gibt es keine Funktion, die mir von einem Unicode-Zeichen den entsprechenden Unicode-Escapecode liefert?

16.10.2007 - 10:00 Uhr

Hallo herbivore,

ähm, was meinst du mit eintippen?

16.10.2007 - 09:48 Uhr

Hallo él toro,

danke für deine Hinweise.

Wie wandle ich Unicode-Zeichen in die Darstellung \u.... um?

16.10.2007 - 08:44 Uhr

Hallo,

ich habe jetzt noch einmal debugged. Das verhalten bei bestimmten Unicode-zeichen ist wirklich so, wie ich es beschrieben habe.

Als Beweis habe ich mal einen Screenshot gemacht.

Also wenn ich es nicht sehen würde, würde ich es auch nicht glauben.

15.10.2007 - 19:24 Uhr

Hallo talla,

das ü ist auch kein wirkliches Unicode-Zeichen. Damit funktionierts ohne Probleme.

Ich habe zum Testen Zeichen verwendet, die ich mir mit der Zeichentablle aus dem Windowszubehör erstellt habe.

15.10.2007 - 17:05 Uhr

Hallo herbivore,

mir kommt das auch ziemlich absurd vor, aber ich habe debugged und da hatte ich das oben beschriebene Verhalten.

Mit "normalen" Zeichen funktionierts ja auch, wenn ich aber echte Unicode verwende gehts nicht.

Ich werde morgen nocheinmal debuggen und sehen, ob das Verhalten wirklich so ist, oder ob ich irgendwo was übersehen habe.

15.10.2007 - 15:12 Uhr

Hallo,

ich habe ein seltsames Problem mit einem Unicode-String.


int iIndex = str1.IndexOf(str2);

str1 beginnt mit einem Zeilenumbruch ('\n') gefolgt von einem Unicode-Zeichen.
str2 enthält nur das Unicode-Zeichen.

Also sollte doch iIndex == 1 sein, es ist aber 0.

Hat jemand eine Idee, woran das liegen könnte?

12.10.2007 - 14:28 Uhr

Hallo,

wie kann ich feststellen ob meine Anwendung für ein bestimmtes Verzeichnis Schreibrechte hat?

Danke!

12.10.2007 - 08:40 Uhr

Eine Frage hätte ich noch.

Bekomme ich irgendwie raus, ob meine Anwendung in einem bestimmten Verzeichnis Schreibrechte hat?

11.10.2007 - 15:22 Uhr

Danke winSharp93, das hilft mir weiter.

11.10.2007 - 14:51 Uhr

Die Datei muss sich nicht im Programmverzeichnis befinden. es wäre für mich aber einfacher, da ich das Programm nicht anpassen müsste. 🙂

Gibt es unter Vista standardmäßig ein Verzeichnis, wo alle Benutzer Lese- und Schreibrechte haben?

11.10.2007 - 10:57 Uhr

Hallo JuyJuka,

gibt es keine andere Möglichkeit?

Es gibt doch diese Manifest-Datei. Diese habe ich wie hier
Vista: Manifest in Anwendung einbinden
beschrieben eingebunden, allerdings mit dem gleichen Ergebnis.

11.10.2007 - 10:38 Uhr

Hallo,

wie kann ich meine Anwendung unter Vista mit ADminrechten laufenlassen?

Ich muss in meinem Programmverzeichnis eine Datei anlegen. Wenn ich als Standardbenutzer angemeldet bin, funktioniert das Anlegen der Datei nicht.
(als Admin gehts)

Wie kann ich erreichen, dass mein Programm eine Datei anelegen kann, wenn man als Standardbenutzer angemeldet ist?

Vielen Dank für eure Antworten.

11.10.2007 - 08:46 Uhr

Setze FileNameTemp beim Anlegen einfach auf einen Leerstring.


string FileNameTemp = "";

09.10.2007 - 10:08 Uhr

Vielen Dank, es geht jetzt.

Ich hatte ProcessStartInfo.UseShellExecute auf false gesetzt und dadurch ging es nicht.

09.10.2007 - 09:50 Uhr

Hallo,

ich möchte aus meiner Anwendung heraus ein pdf-Dokument öffnen (so dass der Acrobat Reader sich öffnet und das Dokument anzeigt).

Ich habe es versucht mit Process.Start und ProcessStartInfo.FileName auf das Dokuemtn gesetzt (z.B. c:\temp\test.pdf).

Ich bekomme aber eine Eyxception: Dies ist keine gültige Win32 Anwendung.

Hat jemand eine Idee, wie ich das Problem lösen könnte?

09.10.2007 - 09:47 Uhr

Hallo cytrics,

du musst anstatt ThreadStart, ParameterizedThreadStart verwenden.

Hier das Beispiel aus der Doku:


using System;
using System.Threading;

public class Work
{
    public static void Main()
    {
        // To start a thread using a shared thread procedure, use
        // the class name and method name when you create the 
        // ParameterizedThreadStart delegate.
        //
        Thread newThread = new Thread(
            new ParameterizedThreadStart(Work.DoWork));
        
        // Use the overload of the Start method that has a
        // parameter of type Object. You can create an object that
        // contains several pieces of data, or you can pass any 
        // reference type or value type. The following code passes
        // the integer value 42.
        //
        newThread.Start(42);

        // To start a thread using an instance method for the thread 
        // procedure, use the instance variable and method name when 
        // you create the ParameterizedThreadStart delegate.
        //
        Work w = new Work();
        newThread = new Thread(
            new ParameterizedThreadStart(w.DoMoreWork));
        
        // Pass an object containing data for the thread.
        //
        newThread.Start("The answer.");
    }
 
    public static void DoWork(object data)
    {
        Console.WriteLine("Static thread procedure. Data='{0}'",
            data);
    }

    public void DoMoreWork(object data)
    {
        Console.WriteLine("Instance thread procedure. Data='{0}'",
            data);
    }
}

/* This code example produces the following output (the order 
   of the lines might vary):

Static thread procedure. Data='42'
Instance thread procedure. Data='The answer'
\*/


26.09.2007 - 13:04 Uhr

Sorry, ich hab jetzt nochmal meinen Code angeschaut und hatte natürlich eine Endlosschleife in Get() produziert (else i--😉.

Also, das Problem ist gelöst, die Synchronisation funktioniert jetzt.

26.09.2007 - 10:40 Uhr

Ich habe schon debugged, die Threads warten alle in der Zeile "lock(thisLock)".

26.09.2007 - 10:15 Uhr

Ich habe ja nur die eine Stelle, die mit lock() gesperrt wird. Sonst passiert in meinem Code nichts mehr mit Sperren.

Ih weiß halt nicht, ob es daran liegen kann, dass das Objekt mit dem ich Sperre static ist. Die Klasse und Methoden MDN_DB ist auch static.

26.09.2007 - 09:50 Uhr

Hallo herbivore,

ja, das sind meine einzigen Sperroperationen. Wenn ich nur einen Thread starte, dann läuft dieser wunderbar durch. Doch ab drei Threads, hängt das Programm. Ich hatte es vorher ohne diese Sperren und es ist auch durchgelaufen. Ohne Sperren kann es natürlich zu Problemen beim Dateizugriff kommen, deshalb wollte ich dies mit Semaphoren lösen.

Die andere Variante wäre halt mit FileStreams zu arbeiten und diese exklusiv zu öffnen. Ich dachte aber mit Semaphoren wäre es eleganter, außerdem musste ich meinen Code nicht groß anpassen.

26.09.2007 - 09:33 Uhr

Hallo herbivore,

ich habe es jetzt mal mit lock probiert, aber der Deadlock besteht immer noch.


...
static Object thisLock = new Object();

public static string AccessDB(string str, bool bAdd)
        {
            string strReturn = "";
            lock (thisLock)
            {
                if (bAdd)
                {
                    Add(str);

                }
                else
                {
                    strReturn = Get(str);
                }
            }
            return strReturn;
        }


Kann es daran liegen, dass die Klasse und Methoden static sind?

26.09.2007 - 08:36 Uhr

Hallo,

ich habe mehrere Threads, die auf eine Datei zugreifen. Diesen Zugriff möchte ich mit der Klasse Mutex synchronisieren.

Dazu verwende ich folgenden Klasse:


public class MDN_DB
    {
        static string m_strAsynchMDN_FileName =   System.IO.Path.Combine(Global.get_global_in_dir(), "AsynchMDN.dat");
        static System.Threading.Mutex DBLock = new System.Threading.Mutex();

        public MDN_DB()
        {
        }      

        public static void Add(string strLine)
        {
            DBLock.WaitOne();
            StreamWriter sw;
            if (!File.Exists(m_strAsynchMDN_FileName)) sw = File.CreateText(m_strAsynchMDN_FileName);
            else sw = File.AppendText(m_strAsynchMDN_FileName);
            sw.WriteLine(strLine);
            sw.Close();
            DBLock.ReleaseMutex();
        }

        public static string Get(string strID)
        {
            string strLine = "";
            string strRet = "";
            DBLock.WaitOne();
            if (File.Exists(m_strAsynchMDN_FileName))
            {
                string[] strLines = File.ReadAllLines(m_strAsynchMDN_FileName);
                int iIndex = -1;
                for (int i = 0; i < strLines.Length; i++)
                {
                    if (strLines[i].Contains(strID))
                    {
                        iIndex = i;
                        break;
                    }
                }

                if (iIndex != -1)
                {
                    string[] strNewLines = new string[strLines.Length - 1];
                    for (int i = 0; i < strLines.Length - 1; i++)
                    {
                        if (i != iIndex) strNewLines[i] = strLines[i];
                        else i--;
                    }
                    File.WriteAllLines(m_strAsynchMDN_FileName, strNewLines);
                    DBLock.ReleaseMutex();
                    strRet = strLines[iIndex];
                }               
            }
            return strRet;
        }

Die Methoden Add() und Get() werden von verschieden Threads aus aufgerufen.
Doch wenn ich mein Programm lufen lasse, bzw. debugge bekomme ich immer einen Deadlock.

Woran könnte das liegen?

19.09.2007 - 10:05 Uhr

Hallo -=[MAD]=-,

ich habe nur Deutsch und Englisch in meiner Anwendung integriert. Spanisch kann ich deshalb nicht einstellen.

13.09.2007 - 16:01 Uhr

Hallo wiesi,

zu 1.: SelectionStart = CursorPosition-1
SelectionLength = 1
SelectedText = ""

zu 2.: Ich kenne auch keine andere Möglichkeit eine komplette Zeile rauszulöschen.

28.08.2007 - 12:43 Uhr

Dann ist der Name bzw. Pfad falsch. Ist Vielleicht vor dem Pfad ein Leerzeichen? (Fällt beim schnellen drüberblicken oft nicht auf, ist mir nämlich auch schon passiert)