0

「ModbusMaster」と呼ばれるユーザーコントロールと、文字通り1つのボタンがあるフォームがあります..

ボタンをクリックすると、コントロールのラベルのテキストを変更したい..

しかし、何も起こりません..

メインフォームはこちら

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;

namespace ModbusMaster_2._0
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    ModbusMaster mb = new ModbusMaster();

    public void button1_Click(object sender, EventArgs e)
    {
      mb.openPort("wooooo");
    }
  }
}

メソッドopenPortを呼び出して、文字列「wooo」をそれに渡しています..

ここに私のコントロールがあります

テキストは更新されません:(:(:(

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 ModbusMaster_2._0
{
  public partial class ModbusMaster : UserControl
  {
    string portName = "COM1"; //default portname
    int timeOut = 300;        //default timeout for response

    SerialPort sp = new SerialPort();

    public ModbusMaster()
    {
      InitializeComponent();
    }

    protected override void OnPaint(PaintEventArgs e)
    {
      portLabel.Text = portName;
    }

    public void openPort(string port)
    {
      statusLabel.Text = port;
    }

/*
 *  Properties 
*/
    public string SerialPort //Set portname
    {
      get { return portName; }
      set { portName = value;}
    }
    public int TimeOut //Set response timeout
    {
      get { return timeOut; }
      set { timeOut = value; }
    }
  }
}
4

2 に答える 2

1

UserControl を作成していますが、フォームのコントロール コレクションに割り当てていません。コンストラクタでこのようなことを試してください。

namespace ModbusMaster_2._0
{
    public partial class Form1 : Form
    {
        ModbusMaster mb = new ModbusMaster();

        public Form1()
        {
            InitializeComponent();
            this.Controls.Add(mb); //Add your usercontrol to your forms control collection
        }

        public void button1_Click(object sender, EventArgs e)
        {
            mb.openPort("wooooo");
        }
    }
}
于 2013-06-26T17:08:53.270 に答える