iT邦幫忙

0

winform UserControl可以取得MainForm元件的資訊嗎?

  • 分享至 

  • xImage

各位大大請教如圖,MainForm裡有個分頁元件,另外做一個UserControl各別放進MainForm的兩個分頁裡。
UserControl裡也有分頁,也有元件,我想要當UserControl的CheckedChanged事件觸發時,可以依據MainForm目前所選的分頁來實做不同的事~
如下圖及範例程式,不過好像new Form1()會造成無窮廻圈的錯誤,不知道是否可以在UserControl的元件裡取得父元件Form1的東西呢?

//Form1.cs
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        static Form1 _obj;
        public static Form1 Instance
        {
            get
            {
                if (_obj == null)
                {
                    _obj = new Form1();
                }
                return _obj;
            }
        }
        public Form1()
        {
            InitializeComponent();
            uC_Test11.UcTp1Cb1.Checked = true;
            uC_Test11.UCTabControl.SelectedIndex = 1;
        }

    }
}

//UC_Test1.cs
namespace WindowsFormsApplication3
{
    public partial class UC_Test1 : UserControl
    {
        public UC_Test1()
        {
            InitializeComponent();
        }

        private void UcTp1Cb1_CheckedChanged(object sender, EventArgs e)
        {
            //要如何取得MainTabControl分頁選取的Index???
            if (Form1.Instance.MainTabControl.SelectedIndex == 1)
            {
                MessageBox.Show("SelectedIndex == 1");
            }else
            {
                MessageBox.Show("SelectedIndex != 1");
            }
        }
    }
}

執行後的錯誤訊息,是指造成無窮廻圈的意思?

leo226 iT邦新手 4 級 ‧ 2021-07-13 01:06:34 檢舉
找到問題了,
public Form1()
{
InitializeComponent();
_obj = this;
}
初始化時要先把_obj 初始化為Form1
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答