Laden...

Forenbeiträge von ado683 Ingesamt 27 Beiträge

21.02.2019 - 14:26 Uhr

Das ist auch Okay so, die angegebenen Prozente werden verteilt das in der Summe wieder 100% rauskommt.

ok dafür schon mal thx

Im Designer sind die auto Spalten/Zeilen nicht zusehen, solange dort sich kein Control befindet.

aber wenn ich ihm jetzt sage gib mir 4 spalten und drei zeilen dann haben ja zeile 2 und 3 auch vier spalten aber das will ich ja nicht.

verstehst du was ich meine?

21.02.2019 - 12:11 Uhr

Ich habe länger nichts mehr mit Winforms gemacht.

Tablelayout und die Controls in die Zelle setzen und entsprechende Colspan, Dock, AutoSize setzen.

  • 4 Spalten (auto, 100%, auto, 100%)
  • 3 Zeilen (auto, auto, 100%)
  
------------------------------------------------------------  
| IP | 127.0.0.1              | Port | 45455               |  
------------------------------------------------------------  
|                    Start / Stop Server                   |  
------------------------------------------------------------  
|                                                          |  
|                                                          |  
|                                                          |  
------------------------------------------------------------  
  

nachdem ich es so editiere und auf ok klicke, macht er jedes mal die spalten wieder auf 50% anstatt 100, bei den zeilen geht es komischerweise. und obwohl ich 4 spalten angebe und 3 zeilen. gibt er mir nur 2 spalten und eine zeile aus.

20.02.2019 - 09:50 Uhr

das hört sich doch mal gut an versuche das mal.
thx

20.02.2019 - 09:07 Uhr

habe da schon alle möglichkeiten durchprobiert. gut wäre es wenn man die elemente aneinander irgendwie ankern kann.

20.02.2019 - 08:25 Uhr

Das habe ich versucht.

Du siehst ja in meinem Bild, dass ich z. B. vier Elemente nebeneinander habe. IP-Label, Texbox(für die IP), Port-Label, Textbox(für den Port).
Wenn ich diese nun links und rechts verankere und dann das Fenster verkleinere dann überlappen sich die Elemente, so dass sie nicht mehr sichtbar sind.

Was tun?

19.02.2019 - 14:22 Uhr

Hallo,

wie kann ich bei winforms es hinbekommen, dass ich labels textboxen die nebeneinander sind vergrößern und verkleinern kann ohne das sie praktisch beim vergrößern ineinander verschwinden.

Im Anhang ist ein Bild, dann wisst ihr was ich meine.

19.02.2019 - 09:57 Uhr

Hallo zsm,

ist es möglich den Backgroundworker direkt abzubrechen?
Das Problem ist ich habe eine CancellationPending rausgeschickt, jedoch wird die if Anfrage davon erst nach einer Acceptclient Methode ausgeführt.

Kann ich das iwie umgehen?


 TcpClient client = listener.AcceptTcpClient();

                    if (worker.CancellationPending)
                    {
                        e.Cancel = true;
                        return;
                    }

diese if anfrage würde ich halt gerne praktisch direkt aufrufen wenn man auf CancelAsync(); aufruft.

06.02.2019 - 13:30 Uhr

habe ich schon gefühlte tausend mal (genau die seite) aber da sind mir zu wenig infos drin.
naja egal

06.02.2019 - 11:29 Uhr

Hallo zusammen,

eine Frage und zwar habe ich nun erfolgreich, nach langem grübeln, es geschafft einen Backgroundworker in meinem Programm zum laufen zu bringen.

In dem Dowork startet bei mir ein TCP Listener und dieser empfängt Daten speichert sie dann in einem String data ab. Läuft auch alles

Nun will ich aber diesen String mir anzeigen lassen. Irgendwie muss ich ja die Progresschanged Methode des Backgroundworkers aufrufen (nachdem die Daten im String sind) dann diese übergeben und die möchte ich mir dann in einer Textbox meines Programms mir anzeigen lassen.

Ich komme nicht weiter, könnt ihr mir dabei helfen bzw. sagen wie das geht?

thx

06.02.2019 - 11:24 Uhr

dankeschön habe das aber jetzt alles anders gelöst. mit dem backgroundworker

05.02.2019 - 14:14 Uhr

Hallo hat irgendjemand mal ein Beispiel von einem TCP Listener in der WPF vorhanden?

Auf youtube etc. gehen die meisten nur darauf ein wenn man windows forms benutzt und da händeln das die leute mit dem invokerequired, Wpf bietet das halt nicht an. Ich habe eigentlich auch schon eine Lösung meine Frage ist jetzt nur wie kann ich daten empfangen?

Also mein Server startet und verbindet sich aber dann passiert nicht viel. Weiß nicht wie ich weiter vorgehen muss.


using System.Windows;
using System;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.Net;


namespace TCP_Listener
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        private int port;
        private bool loop = true;
        private TcpListener serverListener;
        private Socket serverAcceptSocket;


        public MainWindow()
        {
            InitializeComponent();
        }

        public void TcpServer()
        {
            try
            {
                IPAddress ipadd = IPAddress.Parse("127.0.0.1");
                port = Int32.Parse(tBox_Port.Text);

                serverListener = new TcpListener(ipadd, 45455);
                serverListener.Start();
                textBoxVerbunden.Text = "TCP Server Start";
                Thread serverThread = new Thread(new ThreadStart(Receive_From_Client));

            }
            catch
            {
                
            }
        }

        

        public void Receive_From_Client()
        {
            loop = true;
            try
            {
                serverAcceptSocket = serverListener.AcceptSocket();

                while (loop)
                {
                    if (serverAcceptSocket.Connected)
                    {
                        try
                        {

                            byte[] receiveByte = new byte[1024];
                            int nValue = serverAcceptSocket.Receive(receiveByte, receiveByte.Length, 0);

                            if (nValue > 0)
                            {
                                string data = null;
                                data = Encoding.Unicode.GetString(receiveByte);

                                tBox_Outcoming.Text = data;
                            }

                        }
                        catch
                        {

                        }
                    }
                    else
                    {
                        TCP_Close();
                    }
                }
            }
            catch
            {

            }
        }

        public void TCP_Close()
        {
            if (loop == true) loop = false;

            if(serverAcceptSocket != null)
            {
                serverAcceptSocket.Close();
            }

            if(serverListener != null)
            {
                serverListener.Stop();
            }

        }

        private void btn_Send_Click(object sender, RoutedEventArgs e)
        {
            string data = string.Format("{0}", tBox_Outcoming.Text);

            //string data = "<cmdMessage cmdID=\"123ABC\"><![CDATA[<font size=\"+2\" color=\"#ffffff\">Hello World!</font>]]></cmdMessage>";
            byte[] buffer = Encoding.Unicode.GetBytes(data);
            serverAcceptSocket.Send(buffer, 0, buffer.Length, 0);
        }


        private void btnServerStart_Click(object sender, RoutedEventArgs e)
        {
            TcpServer();
        }

        
    }  

}

danke

01.02.2019 - 14:23 Uhr

jetzt noch leichter einfach den worker selber fragen ob er läuft.


if(worker.IsBusy == false)
            {
                worker.RunWorkerAsync();
                
            }
            else
            {
                worker.CancelAsync();
                
            }
01.02.2019 - 14:20 Uhr

habs mit nem boolan gelöst danke trotzdem aber falls es einer mal braucht:


bool running = false;

private void buttonRunBW_Click(object sender, RoutedEventArgs e)
        {
            if(running == false)
            {
                worker.RunWorkerAsync();
                running = true;
            }
            else
            {
                worker.CancelAsync();
                running = false;
            }
               
        }

01.02.2019 - 14:12 Uhr

Hallo zusammen,

ich möchte gerne den BackgroundWorker auf ein und demselben Button starten und stoppen können.
Auf verschiedenen kriege ich es hin aber habt ihr auch eine Idee wie ich es auf einem stoppen kann.
Ich wollte es zb über einen Counter machen.

Aber mein Ausbilder meinte, dass man es zwar so machen kann. Jedoch nicht sauber programmiert ist
wenn der counter nur dafür ist.

Ne andere Lösung kann ich aber nicht verbinden. also verbinden mit meinen gedanken, denn ideen habe ich aber die umsetzung...

weil wenn man ja auf den button klickt ist er ja gecheckt oder geklickt. das vielleicht iwie kombinieren.

thx

31.01.2019 - 09:23 Uhr

das Problem ist ich bin gerade neu im Praktikum.

Und habe in meiner Umschulung bis jetzt nur Grundlagen gemacht und jetzt komme ich hierhin und mir wird ein fertiges voriges Programm in C++ gegeben, welches ich in C#
umschreiben soll.

Und da sind halt dinge drin von denen ich vorher nie gehört habe. Wie zB TcpListener, BackgroundWorker, Async usw

Und selbst wenn ich mit meinem hier zuständigen Ausbilder rede, stehen die oft vor Fragezeichen.

Keine Ahnung wo das noch hinführen soll

30.01.2019 - 13:08 Uhr

wenn ich aber die Zeile rausnehme und versuche asynchron zu machen gibt er mir folgende exception aus:

System.NotImplementedException: Die Methode oder der Vorgang ist nicht implementiert.
bei WpfApp2.MyTcpListener.AcceptTcpClientAsync() in C:\Development\cp50_Applications\DesiteRemote\dotNET\MyTcpListener.cs:Zeile 100.
bei WpfApp2.MyTcpListener.<ConnectAsync>d__0.MoveNext() in C:\Development\cp50_Applications\DesiteRemote\dotNET\MyTcpListener.cs:Zeile 49.

obwohl ich das hier implementiert habe


private static Task<TcpClient> AcceptTcpClientAsync()
        {
            throw new NotImplementedException();
        }

WTF?!

30.01.2019 - 12:22 Uhr

Hallo leut,
nächstes Problem 😁

in dem TCP Listener hängt er sich ab dem Befehl

TcpClient client = server.AcceptTcpClient();

(erster Befehl in der while Schleife auf).

Dh er geht nicht in den Befehl danach, auch wenn ich breakpoints setze bringt es mir nichts, denn er kommt da einfach nicht raus.


public class MyTcpListener
    {
        public static void Connect(string ipAdd, string port1, TextBox textBox_MessageToReceive)
        {
            System.Diagnostics.Debug.WriteLine("vor try");

            TcpListener server = null;
            try
            {
                
                //Console.WriteLine("test");
                System.Diagnostics.Debug.WriteLine("im Try-Block");

                // Set the TcpListener on port 13000.
                Int32 port = Int32.Parse(port1);
                IPAddress ip = IPAddress.Parse(ipAdd);

                System.Diagnostics.Debug.WriteLine("Waiting for a connection... ");

                // TcpListener server = new TcpListener(port);
                server = new TcpListener(ip, port);

                // Start listening for client requests.
                server.Start();

                // Buffer for reading data
                Byte[] bytes = new Byte[256];
                String data = null;

                // Enter the listening loop.
                while (true)
                {

                    // Perform a blocking call to accept requests.
                    // You could also user server.AcceptSocket() here.
                    TcpClient client = server.AcceptTcpClient();
                    System.Windows.MessageBox.Show("Connected!");
                   

                    data = null;

                    // Get a stream object for reading and writing
                    NetworkStream stream = client.GetStream();

                    int i;

                    // Loop to receive all the data sent by the client.
                    while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                    {
                        // Translate data bytes to a ASCII string.
                        data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
                        Console.WriteLine("Received: {0}", data);

                        // Process the data sent by the client.
                        data = data.ToUpper();

                        byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

                        // Send back a response.
                        stream.Write(msg, 0, msg.Length);
                        Console.WriteLine("Sent: {0}", data);
                    }

                    // Shutdown and end connection
                    client.Close();
                }
            }
            catch (SocketException e)
            {
                Console.WriteLine("SocketException: {0}", e);
                Console.ReadKey();
            }
            finally
            {
                // Stop listening for new clients.
                server.Stop();
            }
            

            Console.WriteLine("\nHit enter to continue...");
            Console.Read();
        }
    }

please help

30.01.2019 - 12:17 Uhr
public void SendMessage(IPAddress ip, Int32 port, string message)
        {
            Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream,     ProtocolType.Tcp);
            IPAddress ipAddress = ip;
            IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);

            

            try
            {
                sender.Connect(remoteEP);

                byte[] msg =System.Text.Encoding.ASCII.GetBytes(message);

                sender.Send(msg);

                sender.Disconnect(false);
                
                sender.Close();
                
            }
            catch (ArgumentNullException ane)
            {
                Console.WriteLine("ArgumentNullException : {0}", ane);
            }
            catch (SocketException se)
            {
                Console.WriteLine("SocketException : {0}", se);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unexpected exception : {0}", e);
            }

            
        }
30.01.2019 - 10:32 Uhr

die Daten werden in ein byte [] geschrieben und per ASCII decodiert. dann werden diese daten gesendet und wenn das andere programm die daten bekommen hat, wird es in einer messagebox ausgegeben (NICHT IN VISUAL STUDIO IN DEM ANDEREN PROGRAMM).

wenn ich jetzt neue daten schicke, kriege ich die auch richtig angezeigt aber erst nach einer verzögerung UND während dieser verzögerung sehe ich noch die alten daten in der offenen messagebox.

verstanden?

30.01.2019 - 09:31 Uhr

Hallo zusammen,

ich habe eine Socket Verbindung über eine IP und einen Port aufgebaut und versende darüber eine Nachricht, welches ein andere Programm empfängt.

Dies funktioniert auch, jedoch gibt es eine Kleinigkeit die ich gerne ändern würde.

Wenn ich die Nachricht versende geschieht folgendes:

Ich verschicke zb:
in Visual Studio anderes Program Message Box Ausgabe

Hello World Hello World
blabla (es wird noch die alte Nachricht 'Hello World' angezeigt, dann nach ca. 1 sek.
Verzögerung)
blabla

  1. Warum ist das so?
  2. Und wie kriege ich es hin das, sofort die neue Nachricht gezeigt wird? Muss ich den Socket flushen, wenn ja wie geht das?

thx

29.01.2019 - 14:34 Uhr

das ist es was ich gesucht habe, ich habe nicht keine liste gefunden wo alle aufgelistet sind.
weil ich nicht wusste wie das heißt. aber hast du ja geschrieben
xml-code

thx

29.01.2019 - 10:38 Uhr

Hallo,

wie kann ich einen Text sobald das Programm startet von Beginn an, als Default, in einer Textbox anzeigen? Also mir ist schon klar wie man einen einfachen Text vorneherein setzt. Einfach Text="blabla" etc

aber ich brauche <" diese Zeichen in dem Text und das macht er nicht

Ich suche und suche aber werde nicht fündig

28.01.2019 - 14:21 Uhr

Hallo liebe Leute habe hier ein Problem,
das Problem habe ich als Anhang als Bild angehangen.

Ich möchte einen Button wenn Text in eine Textbox eingegeben wird, einen Focus geben, jedoch gibt er mir dann die Fehlermeldung wie im Bild angezeigt:

Fehlermeldung:
Property or indexer 'UIElement.IsFocused' cannot be assigned to -- it is read only

Ich hoffe ihr könnt mir helfen.

Danke

25.01.2019 - 14:15 Uhr

danke schonmal für die antwort.
aber was konkretes auf mein problem?

25.01.2019 - 02:52 Uhr

Hallo zusammen,

ich benutze seit paar Tagen WPF .NET Frameworks und muss sagen das ich den Umgang mit WinForms leichter finde.

Ich suche bei WPF die Anker Funktion wie bei WinForms. Dort ist es sehr einfach zu finden. Und dann wenn ich das vergrößere oder verkleinere und den Grid mit einer Viewbox versehe, und stretch=Uniform setze. Sieht das ganze Fenster nicht mehr so aus wie ich es will.
Außerdem auch wenn ich sage minWidth oder minHeight von bestimmten Elementen kann man trotzdem alles auf Null verkleinern. Bei WinForms war das nicht so.
Ich frage mich wo der Sinn der minwidth funktion dann da ist.
Ich hoffe ihr könnt mir helfen.

Ich möchte selber mit dem Layoutmanager und der Toolbox Dinge positionieren und diese Größe dann beim vergrößern oder verkleinern proportional beibehalten. Und eine feste minwidth und minheight der Elemente geben, diese sollen auch dann eingehalten werden.

THX