Laden...
P
pgxn84 myCSharp.de - Member
Student Dresden Dabei seit 28.05.2007 26 Beiträge
Benutzerbeschreibung

Forenbeiträge von pgxn84 Ingesamt 26 Beiträge

03.07.2007 - 12:40 Uhr

Hallo,

ich habe einen ähnlichen Wunsch. Beim Starten meiner Anwendung(MainForm) öffnet sich ein zweites Form(SecondForm) was die Initialisierungschritte anzeigt. Im Mainform laufen in der Zeit die besagten Initialisierungsschritte ab. Der Benutzer soll in dieer Zeit eigentlich nur das 2. Form(SecomForm) im Focus haben, das Mainform soll "gesperrt" werden. Aber nicht Enable=false. ShowDialog löst dieses Problem, aber nicht zufriedenstellend, da dieser Befehl ja die weiteren Prozeduren im Mainframe blockieren, bis man das Secondframe beendet...Ich möchte also "ShowDialog" ohne diesen Wartezyklus...

Ist dies möglich?

29.06.2007 - 15:59 Uhr

System.Type SenderType = sender.GetType();
                // was soll hier genau hin??? 
                object SelectedBox; //sowas?
                if (SenderType.Name == "RadioButton")
                {
                    RadioButton SelectedBox = sender as RadioButton;
                }
                else if (SenderType.Name == "CheckBox")
                {
                     CheckBox SelectedBox = sender as CheckBox;

                }
                
                
                Control[] control = this.Controls.Find("txtDataConfig00", true);
                if (control.Length != 0)
                {
                    Control controlNext = control[0];
                    spiTxtNameString = controlNext.Name + ",";
                    if (SelectedBox.Checked == true)
....

29.06.2007 - 15:33 Uhr

das ist klar, möcht ich aber nicht, weil ich ja entweder einen RadioButton habe, oder eine checkedBox(unter construction)...also muss ich dies mit einer If-Then anweisung abfragen...du verstehst

29.06.2007 - 14:54 Uhr

System.Type SenderType = sender.GetType();
                if (SenderType.Name == "RadioButton")
                {
                    RadioButton SelectedBox = sender as RadioButton;
                }
                else if (SenderType.Name == "CheckBox")
                {
                                //under construction

                }
                
                
                Control[] control = this.Controls.Find("txtDataConfig00", true);
                if (control.Length != 0)
                {
                    Control controlNext = control[0];
                    spiTxtNameString = controlNext.Name + ",";
                    if (SelectedBox.Checked == true)
....

bei mir meldet der Compiler immer, das SelectedBox nicht deklariert/vorhanden ist...wenn ich oben bei der definition die If-Then anweisung auskommentiere geht es...könnt ihr mir dies erklären

28.06.2007 - 10:32 Uhr

ok es geht, ich hab das "ToString" falsch geschrieben(toString)...sorry für diesen Post(wo kann man eigene Themen eig. Löschen?)

28.06.2007 - 10:29 Uhr

(3+2).toString() ≤ ist sowas möglich?

anstatt:


int x=(3+2)
textField.Text = x.ToString();

möchte ich:


textField.Text = (3+2).ToString();

Ist dies möglich?

25.06.2007 - 12:15 Uhr

Darf ich Fragen wo du die wunderschönen Buttons her hast?

20.06.2007 - 19:06 Uhr

Weil es so schön hier hineinpasst möchte ich auch mal mein Problem beschreiben und hoffe um Unterstützung beziehungsweise Erfahrungsaustausch.

Auch ich nutze den EventHandler:

 port.DataReceived += new SerialDataReceivedEventHandler(OnSerialDataRecieved);

Nach mehreren Messungen habe ich nun mitbekommen, dass der Event öfters mal um 100ms Zeitverzögert ausgelöst wird, wenn Daten empfangen werden. Habt ihr ähnliche Erfahrungen?

Wie könnte ich das Problem lösen.

Gruß Chris

14.06.2007 - 12:38 Uhr

Mit List[2] bekomm ich ja {Y,Z}

aber ich hab es heraus gefunden...

List[2].Y = Z (.Y entspircht dabei der 2. Spalte...)

14.06.2007 - 09:07 Uhr

variable List[X]{Y, Z} => wie komm ich an Z ran

ich habe irgendwie keine Möglichkeit gefunden die Variable Z im Listfeld zu selektieren?

Könnt ihr mir weiter helfen?

Danke, Chris

13.06.2007 - 09:07 Uhr

Original von herbivore
Hallo dewebey,

ich denke mal mit

TrackBar.SmallChange
TrackBar.LargeChange

herbivore

Kann mir mal jm. die Bedeutung dieser beiden Einstellungen erklären? Ich habe das Problem das ich mit einer Trackbar einen Strom einstellen möchte. Von 0-50A in 100mA(0,1A)schritten.

Erste Annahme: Kommawerte sind mit Trackbar nicht einstellbar, richtig?
Zweite Annahme: In 100-Schritten die Werte Verändern geht so einfach nicht, richtig?

Danke, Chris

12.06.2007 - 11:31 Uhr

wo find ich den weitere Beispiele zum Thema "String to Hex"?

11.06.2007 - 10:30 Uhr

das habe ich schon gefunden, ist aber für mein Projekt nicht passend. Gibt es noch weitere?

10.06.2007 - 19:08 Uhr

Hallo,

ich bin auf der Suche nach einem Designpacket, da die Standardelemente aus der Visual Studio 2005er Version etwas langweilig sind. Gibt es sowas? Habe bei meiner Recherche nix gefunden...

Danke für eure Unterstützung

Chris

08.06.2007 - 23:30 Uhr

ok die 75ms sind Textbox beschreiben & Textboxfarbe ändern.

Ich habe die beiden jeweiligen Befehle via Kommentierung aktiviert bzw. deaktiviert...der Oszi gab mir dann die Bestätigung...mit Kommentaren 25ms, ohne 100ms. Daher die Frage, gibt es einen Befehl nach dem Motto Form.Update=true/false?

08.06.2007 - 18:31 Uhr

Hallo,

ich bins mal wieder 🙂

ich habe ein Formular realisiert, welches mehrere Registerinhalte wiedergibt. Mittels eines Buttons ist die Funktion "Read all register" umgesetzt. Bei der Datenabfrage handelt es sich um einen zugriff auf eine uart-schnittstelle zu. Die Abfrage dauert 13ms pro Register.

Die Abfrage aller Register(25) dauert aber 3 Sekunden. Also benötigt der Rechner rund 100ms arbeitszeit. Nun habe ich nat. nach der Ursache gesucht&festgestellt, dass das schreiben der Registerwerte in die entsprechenden Textboxen 75ms dauert. das ist nat. Ärgerlich, daher möchte ich nach einem Befehl bzw. Option nachfragen, welche das aktualisieren des Formulars deaktiviert & später wieder aktiviert.

Ist dies möglich?

Danke, Chris

07.06.2007 - 16:48 Uhr

Hallo,

ich habe ein Formular mit ziemlich vielen Textboxen. Nun möchte ich nicht für jede einen Event definieren, sondern nach dem Motto

for all Textboxen.changeText += new Event();

ist dies möglich&wenn wie?

07.06.2007 - 16:46 Uhr

Danke Funktioniert super...

07.06.2007 - 16:08 Uhr

Original von peterchen72
Mit this.MaximizeBox = false und this.MinimizeBox = false kann ich ja den Maximieren und Minimieren Button rechts oben unsichtbar machen. Aber wie kann ich den Close-Button (rotes X) unsichtbar machen?

Ich breche jetzt einfach im Form_Closing-Event mit e.Cancel = true ab. Ist aber keine saubere Sache.

Mit this.ControlBox = false kann ich zwar die ganze Leiste weg machen, aber das möchte ich nicht.

Reinhard

Hallo

ich habe ein ähnliches Problem. Wenn der Anwender das "X"[Schließen] oben rechts drückt, soll bei mir ein Event ausgelöst werden, um die Daten zu retten. Aber wie heißt dieser Event.

Habe schon:


private void SPICom_Close()
{
     //...
}

oder _Closing oder Unload versucht, aber es klappt nicht

Danke
Chris

07.06.2007 - 14:51 Uhr

Original von a957m
Hallo,

ob solch ein Verweis immer weiterhilft, halte ich für fraglich ...

Anbei ein kleines Beispiel :

 TextBox found = null;  
            foreach (Control c in this.Controls)  
            {  
                if (c is TextBox)  
                {  
                    if (c.Name == "textBox1")  
                    {  
                        found = (TextBox)c;  
                        break;  
                    }  
                }  
            }  
  
            found.Text = "Gefunden";  

Danke für dein Beispiel. Diesen Ansatz hatte ich auch anfangs realisiert:


foreach (Control controlNext in this.Controls)                       
//for (int i = 1; i < 200; i++)
            {

                //controlNext = this.GetNextControl(controlNext, true);
                
                if (controlNext is TextBox)
                {
                    if (controlNext.Name.IndexOf("Data") != -1)
                    {
                        if (spiTxtNameString == null)
                        {
                            spiTxtNameString = spiTxtNameString + controlNext.Name + ",";
                            spiTxtAddrString = spiTxtAddrString + controlNext.Name.Substring(controlNext.Name.Length-2) + ",";
                        }
                        else
                        {
                            if (spiTxtNameString.IndexOf(controlNext.Name) == -1)
                            {
                                spiTxtNameString = spiTxtNameString + controlNext.Name + ",";
                                spiTxtAddrString = spiTxtAddrString + controlNext.Name.Substring(controlNext.Name.Length - 2) + ",";
                            }
                            else
                            {
                                //i = 200;
                                break;
                            }
                        }
                    }
                   
                }

            }

Problem dabei, er selektiert nur Panels und Buttons, aber nicht meine Textboxen aufm FOrmular?! Daher habe ich es mit einer For--Schleife realisiert, und

controlNext = this.GetNextControl(controlNext, true);

damit geht es auch. Besser wäre noch, wenn ich die Anzahl der Elemente wüsste. Gibt es den Befehl?

nach dem Motto: this.Controls.count;

Danke Chris

07.06.2007 - 08:31 Uhr

Hallo,

ich möchte dynamisch nach einer Textbox mit einem bestimmten namen suchen, diese selektieren&beschreiben. Ungefähr so:


foreach this.activecontrol
{
    if (this.activecontrol.name = "textbox_x01")
    {
        this.activecontrol.text=data;
    }
    else
    {
        this.activecontrol ++;
    }

}

der Syntax ist natürlich in diesem Beispiel falsch. Aber ich glaube ihr versteht mein anliegen. Wie kann ich diese Funktion realisieren?

Danke, Chris

05.06.2007 - 19:17 Uhr

das mit der Ausgabe ist kein Problem (Ansicht => Ausgabe) zeigt mir das im Debug alles wunderbar an...

aber wie gesagt, eigentlich möchte ich nicht "ea" sehen, sondern "data"...und nun verrat mir wie....

@herbivore

ist folgender Gedanke richtig?



// Formular-Klasse
public event TextIOEventHandler TextRawReceived;

        private void OnTextRawReceived(string textReceived)
        {
            if (this.TextRawReceived!=null)
            {
                this.TextRawReceived(this,new TextIOEventArgs(textReceived));
            }
        }

// Uart-Klasse
public delegate void TextIOEventHandler(object sender, TextIOEventArgs e);

public class TextIOEventArgs : System.EventArgs
    {
        private readonly string text;
        public TextIOEventArgs(string text) :base()
        {
            this.text=text;
        }
        public string Text
        {get{return this.text;}}
    }

05.06.2007 - 18:46 Uhr

Original von generalpd
Das Problem ist, der Quellcode ist nicht vollständig, da Du nur den ersten Teil der Main-Klasse kopiert hast. Der andere ist in der "Main.Designer.cs"(?)-Datei.

Daher meine Frage: Was für einen Compiler-Fehler hast Du?

Ich finde z.B. nichts zu dem "comport" in der serialCommunication-Klasse. Und wo ist das Delegate "SerialDataReceivedEventHandler"?

Fehler bekomm ich aktuell keinen, da der Quellcode so stimmt:


public partial class Main : Form
    {
        serialCommunication serialcom = new serialCommunication();

	public Main()
        {
            InitializeComponent();
            serialcom.comport.DataReceived += new SerialDataReceivedEventHandler(ThisMyEvent);
            serialcom.testEvent();
        }

	public static void ThisMyEvent(Object objSender, EventArgs ea)
        {
            Console.WriteLine(ea);
        }
    }


public delegate void MyHandler(string uartStringEvent);


    class serialCommunication
    {
        public event MyHandler MyEvent;
	public SerialPort comport = new SerialPort();

	//

	// hier hab ich das öffnen bzw senden von daten realisiert
	// auf diese Funktion kann ich auch super zugreifen, daten übergeben
	//
	//
    protected void OnMyEvent(string uartStringEvent)
        {
            if (MyEvent != null)
            {
                MyEvent(uartStringEvent);
            }
        }
   public void testEvent()
        {
            string data = (comport.ReadExisting());

            OnMyEvent(data);

        }
    }

ich will aber eben statt "Console.WriteLine(ea);" eigentlich "Console.WriteLine(data);" und das klappt eben nicht so einfach...ich weiß nicht wie.

"SerialDataReceivedEventHandler" is doch eigentlich so ein standard-funktion, da kenn ich mich nicht aus. Hab ich nur kopiert...

05.06.2007 - 18:38 Uhr

Original von herbivore
Hallo pgxn84,

die Antwort auf deine Frage, steht schon in dem von dir kopierten Thread:


>

Verwende also eine eigene EventArgs-Klasse, um zusätzliche Parameter zu übergeben.

herbivore

du möchtest hierbei sicher auf das Beispiel vom "Programmierhans " hinweisen.

Ich kapier dieses aber leider überhaupt nicht. Ich versteh auch nicht, warum es so kompliziert ist, aus einer Klasse einen Wert zurück zu bekommen, bzw. eigentlich aus einem Event. Kannst du mir bitte einen kleinen Tipp geben, wo ich in meinem Quelltext ansetzen muss, um dies zu realisieren?

Vielen lieben dank,

Chris

05.06.2007 - 15:30 Uhr

[EDIT]Abgeteilt von Problem mit EventHandler[/EDIT]

Für mein Problem habe ich mich an folgenden Quelltext Orientiert:

Problem mit EventHandler

Und dies ist mein Quellcode:



public partial class Main : Form
    {
        serialCommunication serialcom = new serialCommunication();

	public Main()
        {
            InitializeComponent();
            serialcom.comport.DataReceived += new SerialDataReceivedEventHandler(ThisMyEvent);
            serialcom.testEvent();
        }

	public static void ThisMyEvent(Object objSender, EventArgs ea)
        {
            Console.WriteLine(ea);
        }
    }


public delegate void MyHandler(string uartStringEvent);


    class serialCommunication
    {
        public event MyHandler MyEvent;

    protected void OnMyEvent(string uartStringEvent)
        {
            if (MyEvent != null)
            {
                MyEvent(uartStringEvent);
            }
        }
   public void testEvent()
        {
            string data = (comport.ReadExisting());

            OnMyEvent(data);

        }
    }

nun mein Problem: ich bracuhe die Seriellen Daten, sprich "data", aber ich weiß nicht wie...all die Ideen die ich habe bringen einen Compiler-Fehler. Bittekopiert meinen Quellcode und zeigt mir die zu ändernden stellen. Ich bin aktuell ratlos.

Vielen Dank

Chris

04.06.2007 - 18:48 Uhr

Hallo liebe DSharp-User,

ich habe ein winziges Problem und oute mich mal lieber gleich als C#-Newb 🙂

also ich habe ein Formular erstellt...

Dieses Formular realisiert einen zugriff auf eine Serielle Schnittstelle. Damit ich auch von einem anderen Formular einfach auf diese Schnittstelle zugreifen kann, dachte ich mir, schieb ich die ganze Uart-Geschichte in eine eigene Klasse. Ich habe also ein neues Klassenfile uart.cs erstellt.

mittels:

serialCommunication serialcom = new serialCommunication();

und zb.:

serialcom.portopen()

kann ich nun vom Formular direkt auf die Klassenbefehle zugreifen & die Uartschnittstelle konfigurieren. Auch die Werteübergabe ist kein Problem.

Nun les ich den Port natürlich auch mal aus. Dafür gibt es bei mir unter Main(im Formular) den verweis:

serialcom.comport.Datareceived += new serialDataReceivedEventHandler(serialcom_DataReceived);

in dieser Funktion wird der Port ausgelesen. Und den Inhalt möchte ich gern auf meinen Formular wiedergeben. Bloß wie bekomm ich die Daten der Variablen dieser Klasse in mein Formular übermittelt.

Eine Returnanweisung geht nicht, da durch dieses " += new ..." irgendwie rückgabewerte nicht gehen.

Bitte helft mir...

Danke im Voraus, Chris