Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
damonxx
7 / 7 / 8
Регистрация: 12.08.2013
Сообщений: 196
1

Передать данные из класса в RichTextBox

18.07.2017, 09:43. Просмотров 976. Ответов 17
Метки нет (Все метки)

Доброго времени суток!!!
есть отдельный класс который передает данные на форму
C#
1
2
3
4
5
6
string s = Encoding.BigEndianUnicode.GetString(buf);
                string receiver = match.Groups[1].Value;
                string sender = match1.Groups[1].Value;
                string msg = s;
                string id = match2.Groups[1].Value;
                Form1.reccept(receiver, sender, msg, id);
На форме такой код
C#
1
2
3
4
5
 public static void reccept(string receiver, string sender, string msg, string id)
        {
            
       richTextBox1.Text += receiver + " " + sender + " " + msg + "  " + id;
        }
Ругается на "Для нестатического поля, метода или свойства "Form1.richTextBox1" требуется ссылка на объект." подскажите как исправить ошибку
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2017, 09:43
Ответы с готовыми решениями:

Передать данные из класса в главную форму
У меня есть Form1.cs Class1.cs Class2.cs Запускается Form1 она вызывает...

Передать из класса данные в лейблу формы
Для наглядности вот сразу картинка:...

Передать данные из объекта класса на форму
Я не уверен в правильности вопроса, но дело в следующем. У меня есть класс...

Передать в форму данные из другого класса, работающего в другом потоке
Доброго времени суток! Имеется приложение с примерно такой структурой: ...

Изменение richTextBox из другого класса
Мне нужно изменить значение ричтекстбокса из другого класса, при отладке строка...

17
SeIZVeIZ
682 / 628 / 266
Регистрация: 08.02.2014
Сообщений: 1,947
Завершенные тесты: 3
18.07.2017, 10:01 2
damonxx, в статический метод Вам нужно передавать ссылку на форму в которой использовать уже открытое поле с ричбоксом, иначе не выйдет.
1
netBool
243 / 247 / 148
Регистрация: 16.11.2010
Сообщений: 932
Записей в блоге: 9
Завершенные тесты: 5
18.07.2017, 10:06 3
Цитата Сообщение от damonxx Посмотреть сообщение
public static void reccept
damonxx , дело в том, что у вас функция reccept статическая и даже если она находится внутри класса Form1, она не имеет доступа к экземплярам данного класса изнутри. А richTextBox1 - экземпляр класса, скорее всего private

Можно сделать reccept обычным, без статик. Но тогда вы не сможете его просто так вызвать
C#
1
                Form1.reccept(receiver, sender, msg, id);
т.к. Form1 - это класс, а не его экземпляр. А нужен будет экземпляр уже созданной формы
1
damonxx
7 / 7 / 8
Регистрация: 12.08.2013
Сообщений: 196
18.07.2017, 10:14  [ТС] 4
Тогда как лучше сделать?
0
netBool
243 / 247 / 148
Регистрация: 16.11.2010
Сообщений: 932
Записей в блоге: 9
Завершенные тесты: 5
18.07.2017, 10:17 5
Трудно сказать. Вы сами проектируете свое приложение, можно и так и так. У меня нет понимания всей схемы программы,
вы ее не выкладывали
Цитата Сообщение от damonxx Посмотреть сообщение
есть отдельный класс который передает данные на форму
Для понимания нужно знать этот класс статический?
Цитата Сообщение от damonxx Посмотреть сообщение
string s = Encoding.BigEndianUnicode.GetString(buf);
C#
1
2
3
4
5
 string receiver = match.Groups[1].Value;
string sender = match1.Groups[1].Value;
string msg = s;
 string id = match2.Groups[1].Value;
Form1.reccept(receiver, sender, msg, id);
Функция, где используется этот код статическая?
1
damonxx
7 / 7 / 8
Регистрация: 12.08.2013
Сообщений: 196
18.07.2017, 10:18  [ТС] 6
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
private void handleTheRequest(Socket clientSocket)
        {
            byte[] buffer = new byte[10240]; // 10 kb, just in case
            int receivedBCount = clientSocket.Receive(buffer); // Получаем запрос
            string strReceived = charEncoder.GetString(buffer, 0, receivedBCount);
 
            // Парсим запрос
            string httpMethod = strReceived.Substring(0, strReceived.IndexOf(" "));
 
            int start = strReceived.IndexOf(httpMethod) + httpMethod.Length + 1;
            int length = strReceived.LastIndexOf("HTTP") - start - 1;
            string requestedUrl = strReceived.Substring(start, length);
            string pattern = @"\breceiver=((.*?))&";
            string pattern1 = @"\bsender=((.*?))&";
            string pattern2 = @"\bmsg=((.*?))&";
            string pattern3 = @"\bud=((.*?))&";
            //string pattern = 
            Regex regex = new Regex(pattern);
            Regex regex1 = new Regex(pattern1);
            Regex regex2 = new Regex(pattern2);
            Regex regex3 = new Regex(pattern3);
 
            System.Text.RegularExpressions.Match match = regex.Match(requestedUrl);
            System.Text.RegularExpressions.Match match1 = regex1.Match(requestedUrl);
            System.Text.RegularExpressions.Match match2 = regex2.Match(requestedUrl);
            System.Text.RegularExpressions.Match match3 = regex3.Match(requestedUrl);
            if (match != null)
            {
                string hex = match3.Groups[1].Value;
                byte[] buf = new byte[hex.Length / 2];
                for (int i = 0; i < hex.Length; i += 2)
                {
                    buf[i / 2] = System.Convert.ToByte(hex.Substring(i, 2), 16);
                }
                string s = Encoding.BigEndianUnicode.GetString(buf);
                string receiver = match.Groups[1].Value;
                string sender = match1.Groups[1].Value;
                string msg = s;
                string id = match2.Groups[1].Value;
                Form1.reccept(receiver, sender, msg, id);
                
            }
0
Usaga
Эксперт .NET
5097 / 3438 / 609
Регистрация: 21.01.2016
Сообщений: 13,551
Завершенные тесты: 2
18.07.2017, 10:23 7

Не по теме:

damonxx, это тихий ужас...



Почему вы match проверяете на null, а остальные match* - нет? Что будет, если hex.Length не будет кратно двум? Почему код работы с сокетом тут же и парсит что-то и с формой работает?
1
damonxx
7 / 7 / 8
Регистрация: 12.08.2013
Сообщений: 196
18.07.2017, 10:29  [ТС] 8
1. Если первый match не пустой то и остальные тоже,
2. hex.Length тут тоже постоянно в одном формате приходят данные.
3. Вот я и спрашиваю совета как лучше сделать.
0
netBool
243 / 247 / 148
Регистрация: 16.11.2010
Сообщений: 932
Записей в блоге: 9
Завершенные тесты: 5
18.07.2017, 10:38 9
Ладо, судя по всему класс не статический. Тогда другой вопрос, вы экземпляр этого класса где-нибудь внутри Form1 создаете? Как вы с ним работаете? Где и как планируете обращаться к функции handleTheRequest?
1
damonxx
7 / 7 / 8
Регистрация: 12.08.2013
Сообщений: 196
18.07.2017, 10:44  [ТС] 10
Код формы
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Configuration;
 
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
 
using System.Collections;
using System.Text.RegularExpressions;
 
 
namespace WhatMax
{
    
 
    public partial class Form1 : Form
    {
 
        Server server = new Server();
        public Form1()
        {
            InitializeComponent();
          
 
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            System.Configuration.Configuration currentConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            currentConfig.AppSettings.Settings["tel"].Value = textBox1.Text;
            currentConfig.AppSettings.Settings["activ"].Value = textBox2.Text;
            currentConfig.AppSettings.Settings["name"].Value = textBox3.Text;
            currentConfig.Save(ConfigurationSaveMode.Modified);
           
        }
 
 
        private void button1_Click(object sender, EventArgs e)
        {
            ConfigurationManager.RefreshSection("appSettings");
            string ip = ConfigurationManager.AppSettings["ip"];
            string port = ConfigurationManager.AppSettings["port"];
            string root = ConfigurationManager.AppSettings["root"];
            IPAddress ipadd = IPAddress.Parse(ip);
            richTextBox1.Text = "IP адрес   =   " + ip + "\r\n" + "Порт   =    " + port + "\r\n" + "Каталог   =    " + root;
            if (server.start(ipadd, Convert.ToInt32(port), 100, root))
            {
                btnStart.Enabled = false;
                btnStop.Enabled = true;
                //btnTest.Enabled = true;
            }
            else
                MessageBox.Show(this, "Невозможно звпустить север. Быть может порт " + port + " занят другой программой.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
 
        private void button1_Click_1(object sender, EventArgs e)
        {
            conf fr = new conf();
            fr.Show();
 
        }
 
        private void btnStop_Click(object sender, EventArgs e)
        {
            server.stop();
            btnStart.Enabled = true;
            btnStop.Enabled = false;
        }
 
       public static void reccept(string receiver, string sender, string msg, string id)
        {
            
            //Form1.rtb(receiver, sender, msg, id);
            Form1.richTextBox1.Text += receiver + " " + sender + " " + msg + "  " + id;
        }
        public void rtb(string receiver, string sender, string msg, string id)
        {
            richTextBox1.Text += receiver + " " + sender + " " + msg + "  " + id;
        }
    }
}

код класса
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
using System.Net.Sockets;
using System.Net;
using System.Threading;
using System.Text;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
 
namespace WhatMax
{
    class Server
    {
        public bool running = false; //Запущено ли?
 
        private int timeout = 8; // Лиммт времени на приём данных.
        private Encoding charEncoder = Encoding.UTF8; // Кодировка
        private Socket serverSocket; // Нащ сокет
        private string contentPath; // Корневая папка для контента
 
        // Поодерживаемый контент нашим сервером
        // Вы можете добавить больше
     
        private Dictionary<string, string> extensions = new Dictionary<string, string>()
        { 
            //{ "extension", "content type" }
            { "htm", "text/html" },
            { "html", "text/html" },
            { "xml", "text/xml" },
            { "txt", "text/plain" },
            { "css", "text/css" },
            { "png", "image/png" },
            { "gif", "image/gif" },
            { "jpg", "image/jpg" },
            { "jpeg", "image/jpeg" },
            { "zip", "application/zip"}
        };
 
        public bool start(IPAddress ipAddress, int port, int maxNOfCon, string contentPath)
        {
            if (running) return false; // Если уже запущено, то выходим
 
            try
            {
                // tcp/ip сокет (ipv4)
                serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                serverSocket.Bind(new IPEndPoint(ipAddress, port));
                serverSocket.Listen(maxNOfCon);
                serverSocket.ReceiveTimeout = timeout;
                serverSocket.SendTimeout = timeout;
                running = true;
                this.contentPath = contentPath;
            }
            catch { return false; }
 
            // Наш поток ждет новые подключения и создает новые потоки.
            Thread requestListenerT = new Thread(() =>
            {
                while (running)
                {
                    Socket clientSocket;
                    try
                    {
                        clientSocket = serverSocket.Accept();
                        // Создаем новый поток для нового клиента и продолжаем слушать сокет.
                        Thread requestHandler = new Thread(() =>
                        {
                            clientSocket.ReceiveTimeout = timeout;
                            clientSocket.SendTimeout = timeout;
                            try { handleTheRequest(clientSocket); }
                            catch
                            {
                                try { clientSocket.Close(); } catch { }
                            }
                        });
                        requestHandler.Start();
                    }
                    catch { }
                }
            });
            requestListenerT.Start();
 
            return true;
        }
 
        public void stop()
        {
            if (running)
            {
                running = false;
                try { serverSocket.Close(); }
                catch { }
                serverSocket = null;
            }
        }
 
        private void handleTheRequest(Socket clientSocket)
        {
            byte[] buffer = new byte[10240]; // 10 kb, just in case
            int receivedBCount = clientSocket.Receive(buffer); // Получаем запрос
            string strReceived = charEncoder.GetString(buffer, 0, receivedBCount);
 
            // Парсим запрос
            string httpMethod = strReceived.Substring(0, strReceived.IndexOf(" "));
 
            int start = strReceived.IndexOf(httpMethod) + httpMethod.Length + 1;
            int length = strReceived.LastIndexOf("HTTP") - start - 1;
            string requestedUrl = strReceived.Substring(start, length);
            string pattern = @"\breceiver=((.*?))&";
            string pattern1 = @"\bsender=((.*?))&";
            string pattern2 = @"\bmsg=((.*?))&";
            string pattern3 = @"\bud=((.*?))&";
            //string pattern = 
            Regex regex = new Regex(pattern);
            Regex regex1 = new Regex(pattern1);
            Regex regex2 = new Regex(pattern2);
            Regex regex3 = new Regex(pattern3);
 
            System.Text.RegularExpressions.Match match = regex.Match(requestedUrl);
            System.Text.RegularExpressions.Match match1 = regex1.Match(requestedUrl);
            System.Text.RegularExpressions.Match match2 = regex2.Match(requestedUrl);
            System.Text.RegularExpressions.Match match3 = regex3.Match(requestedUrl);
            if (match != null)
            {
                string hex = match3.Groups[1].Value;
                byte[] buf = new byte[hex.Length / 2];
                for (int i = 0; i < hex.Length; i += 2)
                {
                    buf[i / 2] = System.Convert.ToByte(hex.Substring(i, 2), 16);
                }
                string s = Encoding.BigEndianUnicode.GetString(buf);
                string receiver = match.Groups[1].Value;
                string sender = match1.Groups[1].Value;
                string msg = s;
                string id = match2.Groups[1].Value;
                Form1.reccept(receiver, sender, msg, id);
               
            }
 
            
 
        }
 
        private void notImplemented(Socket clientSocket)
        {
            sendResponse(clientSocket, "<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body><h2>Atasoy Simple Web Server</h2><div>501 - Method Not Implemented</div></body></html>", "501 Not Implemented", "text/html");
        }
 
        private void notFound(Socket clientSocket)
        {
            sendResponse(clientSocket, "<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body><h2>Atasoy Simple Web Server</h2><div>404 - Not Found</div></body></html>", "404 Not Found", "text/html");
        }
 
        private void sendOkResponse(Socket clientSocket, byte[] bContent, string contentType)
        {
            sendResponse(clientSocket, bContent, "200 OK", contentType);
        }
 
        // Для строк
        private void sendResponse(Socket clientSocket, string strContent, string responseCode, string contentType)
        {
            byte[] bContent = charEncoder.GetBytes(strContent);
            sendResponse(clientSocket, bContent, responseCode, contentType);
        }
 
        // Для массива байтов
        private void sendResponse(Socket clientSocket, byte[] bContent, string responseCode, string contentType)
        {
            try
            {
                byte[] bHeader = charEncoder.GetBytes(
                                    "HTTP/1.1 " + responseCode + "\r\n"
                                  + "Server: Наш простой ВЭБсервер\r\n"
                                  + "Content-Length: " + bContent.Length.ToString() + "\r\n"
                                  + "Connection: close\r\n"
                                  + "Content-Type: " + contentType + "\r\n\r\n");
                clientSocket.Send(bHeader);
                clientSocket.Send(bContent);
                clientSocket.Close();
            }
            catch { }
        }
    }
}
0
netBool
243 / 247 / 148
Регистрация: 16.11.2010
Сообщений: 932
Записей в блоге: 9
Завершенные тесты: 5
18.07.2017, 11:23 11
Лучший ответ Сообщение было отмечено damonxx как решение

Решение

Что-то голова сегодня плохо варит
Но в целом так понятнее

Первое, что пришло в голову:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
using System.Net.Sockets;
using System.Net;
using System.Threading;
using System.Text;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
 
namespace WhatMax
{
    class Server
    {
        public bool running = false; //Запущено ли?
 
        private int timeout = 8; // Лиммт времени на приём данных.
        private Encoding charEncoder = Encoding.UTF8; // Кодировка
        private Socket serverSocket; // Нащ сокет
        private string contentPath; // Корневая папка для контента
 
        public string s = String.Empty;
        public string receiver= String.Empty;
        public string sender = String.Empty;
        public string msg == String.Empty;
        public string id = = String.Empty;
 
        // Поодерживаемый контент нашим сервером
        // Вы можете добавить больше
     
        private Dictionary<string, string> extensions = new Dictionary<string, string>()
        { 
            //{ "extension", "content type" }
            { "htm", "text/html" },
            { "html", "text/html" },
            { "xml", "text/xml" },
            { "txt", "text/plain" },
            { "css", "text/css" },
            { "png", "image/png" },
            { "gif", "image/gif" },
            { "jpg", "image/jpg" },
            { "jpeg", "image/jpeg" },
            { "zip", "application/zip"}
        };
 
        public bool start(IPAddress ipAddress, int port, int maxNOfCon, string contentPath,RichTextBox richTextBox1)
        {
            if (running) return false; // Если уже запущено, то выходим
 
            try
            {
                // tcp/ip сокет (ipv4)
                serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                serverSocket.Bind(new IPEndPoint(ipAddress, port));
                serverSocket.Listen(maxNOfCon);
                serverSocket.ReceiveTimeout = timeout;
                serverSocket.SendTimeout = timeout;
                running = true;
                this.contentPath = contentPath;
            }
            catch { return false; }
 
            // Наш поток ждет новые подключения и создает новые потоки.
            Thread requestListenerT = new Thread(() =>
            {
                while (running)
                {
                    Socket clientSocket;
                    try
                    {
                        clientSocket = serverSocket.Accept();
                        // Создаем новый поток для нового клиента и продолжаем слушать сокет.
                        Thread requestHandler = new Thread(() =>
                        {
                            clientSocket.ReceiveTimeout = timeout;
                            clientSocket.SendTimeout = timeout;
                            try { handleTheRequest(clientSocket, richTextBox1); }
                            catch
                            {
                                try { clientSocket.Close(); } catch { }
                            }
                        });
                        requestHandler.Start();
                    }
                    catch { }
                }
            });
            requestListenerT.Start();
 
            return true;
        }
 
        public void stop()
        {
            if (running)
            {
                running = false;
                try { serverSocket.Close(); }
                catch { }
                serverSocket = null;
            }
        }
 
        private void handleTheRequest(Socket clientSocket,RichTextBox richTextBox1)
        {
            byte[] buffer = new byte[10240]; // 10 kb, just in case
            int receivedBCount = clientSocket.Receive(buffer); // Получаем запрос
            string strReceived = charEncoder.GetString(buffer, 0, receivedBCount);
 
            // Парсим запрос
            string httpMethod = strReceived.Substring(0, strReceived.IndexOf(" "));
 
            int start = strReceived.IndexOf(httpMethod) + httpMethod.Length + 1;
            int length = strReceived.LastIndexOf("HTTP") - start - 1;
            string requestedUrl = strReceived.Substring(start, length);
            string pattern = @"\breceiver=((.*?))&";
            string pattern1 = @"\bsender=((.*?))&";
            string pattern2 = @"\bmsg=((.*?))&";
            string pattern3 = @"\bud=((.*?))&";
            //string pattern = 
            Regex regex = new Regex(pattern);
            Regex regex1 = new Regex(pattern1);
            Regex regex2 = new Regex(pattern2);
            Regex regex3 = new Regex(pattern3);
 
            System.Text.RegularExpressions.Match match = regex.Match(requestedUrl);
            System.Text.RegularExpressions.Match match1 = regex1.Match(requestedUrl);
            System.Text.RegularExpressions.Match match2 = regex2.Match(requestedUrl);
            System.Text.RegularExpressions.Match match3 = regex3.Match(requestedUrl);
            if (match != null)
            {
                string hex = match3.Groups[1].Value;
                byte[] buf = new byte[hex.Length / 2];
                for (int i = 0; i < hex.Length; i += 2)
                {
                    buf[i / 2] = System.Convert.ToByte(hex.Substring(i, 2), 16);
                }
                string s = Encoding.BigEndianUnicode.GetString(buf);
                string receiver = match.Groups[1].Value;
                string sender = match1.Groups[1].Value;
                string msg = s;
                string id = match2.Groups[1].Value;
                richTextBox1.Text += receiver + " " + sender + " " + msg + "  " + id;
               
            }            
 
 
        private void notImplemented(Socket clientSocket)
        {
            sendResponse(clientSocket, "<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body><h2>Atasoy Simple Web Server</h2><div>501 - Method Not Implemented</div></body></html>", "501 Not Implemented", "text/html");
        }
 
        private void notFound(Socket clientSocket)
        {
            sendResponse(clientSocket, "<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body><h2>Atasoy Simple Web Server</h2><div>404 - Not Found</div></body></html>", "404 Not Found", "text/html");
        }
 
        private void sendOkResponse(Socket clientSocket, byte[] bContent, string contentType)
        {
            sendResponse(clientSocket, bContent, "200 OK", contentType);
        }
 
        // Для строк
        private void sendResponse(Socket clientSocket, string strContent, string responseCode, string contentType)
        {
            byte[] bContent = charEncoder.GetBytes(strContent);
            sendResponse(clientSocket, bContent, responseCode, contentType);
        }
 
        // Для массива байтов
        private void sendResponse(Socket clientSocket, byte[] bContent, string responseCode, string contentType)
        {
            try
            {
                byte[] bHeader = charEncoder.GetBytes(
                                    "HTTP/1.1 " + responseCode + "\r\n"
                                  + "Server: Наш простой ВЭБсервер\r\n"
                                  + "Content-Length: " + bContent.Length.ToString() + "\r\n"
                                  + "Connection: close\r\n"
                                  + "Content-Type: " + contentType + "\r\n\r\n");
                clientSocket.Send(bHeader);
                clientSocket.Send(bContent);
                clientSocket.Close();
            }
            catch { }
        }
    }
}
и в главной форме:
C#
1
            if (server.start(ipadd, Convert.ToInt32(port), 100, root))
поменть на
C#
1
            if (server.start(ipadd, Convert.ToInt32(port), 100, root,richTextBox1))
А так вариатов куча...
Наверное можно создать свойство в Server и туда передавать richTextBox1, можно по ссылке значение richTextBox1.Text, делегаты, Application.OpenForms
1
SeIZVeIZ
682 / 628 / 266
Регистрация: 08.02.2014
Сообщений: 1,947
Завершенные тесты: 3
18.07.2017, 11:30 12
Цитата Сообщение от damonxx Посмотреть сообщение
1. Если первый match не пустой то и остальные тоже
очень опрометчивое мнение при разных паттернах для каждой регулярки, от ошибок никто не застрахован
1
damonxx
7 / 7 / 8
Регистрация: 12.08.2013
Сообщений: 196
18.07.2017, 11:42  [ТС] 13
ругается на
C#
1
if (server.start(ipadd, Convert.ToInt32(port), 100, root,richTextBox1))
не удается преобразовать из System.windows.forms.richtextbox в richtextbox

C#
1
2
3
4
5
public string s = String.Empty;
        public string receiver = String.Empty;
        public string sender = String.Empty;
        public string msg == String.Empty;
        public string id = = String.Empty;
имя string не существует в текущем контексте
Синтаксическая ошибка, требуется ","

C#
1
 public bool start(IPAddress ipAddress, int port, int maxNOfCon, string contentPath, RichTextBox richTextBox1)
не удалось найти тип или имя пространство имен richtextbox
0
netBool
243 / 247 / 148
Регистрация: 16.11.2010
Сообщений: 932
Записей в блоге: 9
Завершенные тесты: 5
18.07.2017, 11:57 14
C#
1
2
       public string msg == String.Empty;
        public string id = = String.Empty;
Прошу прощения за синтаксические ошибки. Писал на коленке, даже двойные равно поставил вместо одинарных.

Цитата Сообщение от damonxx Посмотреть сообщение
не удается преобразовать из System.windows.forms.richtextbox в richtextbox
Ну это смешно. У вас такой сложный код с лямбда выражениями, а такая заминка остановила?


Просто подключите пространство имен
C#
1
using System.Windows.Forms;
Или передайте так
C#
1
System.Windows.Forms.RichTextBox
1
damonxx
7 / 7 / 8
Регистрация: 12.08.2013
Сообщений: 196
18.07.2017, 12:00  [ТС] 15
Да с двойными я то понял и убрал
C#
1
String.Empty;
а вот почему на это ругается "имя string не существует в текущем контексте" не пойму
0
netBool
243 / 247 / 148
Регистрация: 16.11.2010
Сообщений: 932
Записей в блоге: 9
Завершенные тесты: 5
18.07.2017, 12:26 16
C#
1
using System;
?


Или можно на string.Empty просто заменить, по идее должен перестать ругаться
1
damonxx
7 / 7 / 8
Регистрация: 12.08.2013
Сообщений: 196
18.07.2017, 13:03  [ТС] 17
при передаче в форму
C#
1
richTextBox1.Text += receiver + " " + sender + " " + msg + "  " + id;
Недопустимая операция в нескольких потоках: попытка доступа к элементу управления richTextBox1. не из того потока, в котором он был создан

Добавлено через 11 минут
Сделал так
C#
1
 richTextBox1.Invoke(new Action (() => richTextBox1.Text += receiver + " " + sender + " " + msg + "  " + id));
и все норм
0
netBool
243 / 247 / 148
Регистрация: 16.11.2010
Сообщений: 932
Записей в блоге: 9
Завершенные тесты: 5
18.07.2017, 15:05 18
Недопустимая операция в нескольких потоках: попытка доступа к элементу управления richTextBox1. не из того потока, в котором он был создан
А точно, там же еще и другой поток
0
18.07.2017, 15:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2017, 15:05

Как из класса выводить строку в RichTextBox?
Как из класса выводить строку в richTextBox?

Многострочное поле RichText класса RichTextBox
Нужно загрузить текст в многострочное поле RichText класса RichTextBox с...

Извлечь не текстовые данные из richTextBox
Всем доброго времени суток. Пишу небольшое клиент-серверное приложение для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru