Как я могу передать данные из одного пользовательского контроля в другой пользовательский контроль в C# Form App? - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть c# приложение формы с двумя usercontrol. В первом я работаю с настройками последовательного порта, а во втором я хочу показать данные, которые поступают из одного и того же последовательного порта. Моя проблема в том, что я не могу получить доступ к тому же последовательному порту в разных пользовательских элементах управления или я не могу передать данные из одного пользовательского элемента управления в другой элемент управления. Я видел те же вопросы, но они не смогли решить мою проблему.

Here is port settings screen

Here is data screen

Вот мой код порта настроек пользователя. Я застрял здесь.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;

namespace communication
{
    public partial class portUserControl : UserControl
    {   


        public portUserControl()
        {
            InitializeComponent();
        }

        private void get_ports()
        {
            string[] ports = SerialPort.GetPortNames();
            foreach(string port in ports)
            {
                comboBoxPorts.Items.Add(port);
            }
        }
        private void add_baud_rates()
        {
            string[] baudRates = { "115200", "4800", "9600"};
            comboBoxBaudRates.Items.AddRange(baudRates);
        }
        private void connect()
        {
            try
            {
                if(comboBoxPorts.SelectedItem !=null && comboBoxBaudRates.SelectedItem != null)
                {
                    serialPort1.PortName = comboBoxPorts.SelectedItem.ToString();
                    serialPort1.BaudRate = Convert.ToInt16(comboBoxBaudRates.SelectedItem);
                    serialPort1.Open();
                    labelConnectionStaus.Text = "Connected";
                    labelConnectionStaus.ForeColor = Color.Green;
                }
                else
                {
                    MessageBox.Show("Please select port name and baud rate");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void disconnect()
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
                labelConnectionStaus.Text = "Diconnected";
                labelConnectionStaus.ForeColor = Color.Red;
            }
        }


        private void portUserControl_Load(object sender, EventArgs e)
        {
            get_ports();
            add_baud_rates();
        }

        private void buttonConnect_Click(object sender, EventArgs e)
        {
            connect();
        }

        private void buttonDisconnect_Click(object sender, EventArgs e)
        {
            disconnect();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...