C# Visionpro 主窗体调用子窗体(自定义控件)按照行列进行显示(双击子窗体全)

自定义控件界面及控件如下


控件列表

using Cognex.VisionPro;
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 Cognex.VisionPro.ToolBlock;
using Cognex.VisionPro.ToolGroup;
using System.Security.RightsManagement;
using System.Windows.Forms.VisualStyles;

namespace VMPro2024._08.UserControl8
{
    public partial class DisplayControl : UserControl
    {
        #region 申明变量
        public DisplayControl displayControl;
        public TitleForm titleForm;
        #endregion

        DisplayControl _displayControl;
        public DisplayControl()
        {
            InitializeComponent();
            this.displayControl = _displayControl;           
        }

        public void IniDisplay()
        {
            this.cogDisplayStatusBarV21.Display = this.cogRecordDisplay1;
            this.cogDisplayToolbarV21.Display = this.cogRecordDisplay1;
            this.cogRecordDisplay1.AutoFit = true;
        }

        //toolstrip
        public CogRecordDisplay cogRecordDisplay
        {
            set { this.cogRecordDisplay1 = value; }
            get { return this.cogRecordDisplay1; }
        }


        #region 实时采集图像

        /// <summary>
        /// 第一个窗体中的toolstrip事件
        /// </summary>
        public ToolStripStatusLabel toolStripStatusLabel1
        {
            get
            {
                return this.相机实时_toolStripLabel;
            }
        }

        /// <summary>
        /// 第二个窗体中的toolstrip事件
        /// </summary>
        public ToolStripStatusLabel toolStripStatusLabel2
        {
            get
            {
                return this.相机实时_toolStripLabel;
            }
        }

        /// <summary>
        /// 第三个窗体中的toolstrip事件
        /// </summary>
        public ToolStripStatusLabel toolStripStatusLabel3
        {
            get
            {
                return this.相机实时_toolStripLabel;
            }
        }

        /// <summary>
        /// 第四个窗体中的toolstrip事件
        /// </summary>
        public ToolStripStatusLabel toolStripStatusLabel4
        {
            get
            {
                return this.相机实时_toolStripLabel;
            }
        }

        /// <summary>
        /// 第五个窗体中的toolstrip事件
        /// </summary>
        public ToolStripStatusLabel toolStripStatusLabel5
        {
            get
            {
                return this.相机实时_toolStripLabel;
            }
        }

        /// <summary>
        /// 第六个窗体中的toolstrip事件
        /// </summary>
        public ToolStripStatusLabel toolStripStatusLabel6
        {
            get
            {
                return this.相机实时_toolStripLabel;
            }
        }
        #endregion

        #region 相机单次采图
        /// <summary>
        /// 第一个子窗体手动拍照按钮
        /// </summary>
        public ToolStripStatusLabel toolStripStatusLabel拍照1
        {
            get
            {
                return this.相机拍照_toolStatusLabel;
            }
        }

        /// <summary>
        /// 第二个子窗体手动拍照按钮
        /// </summary>
        public ToolStripStatusLabel toolStripStatusLabel拍照2
        {
            get
            {
                return this.相机拍照_toolStatusLabel;
            }
        }

        /// <summary>
        /// 第三个子窗体手动拍照按钮
        /// </summary>
        public ToolStripStatusLabel toolStripStatusLabel拍照3
        {
            get
            {
                return this.相机拍照_toolStatusLabel;
            }
        }

        /// <summary>
        /// 第四个子窗体手动拍照按钮
        /// </summary>
        public ToolStripStatusLabel toolStripStatusLabel拍照4
        {
            get
            {
                return this.相机拍照_toolStatusLabel;
            }
        }

        /// <summary>
        /// 第五个子窗体手动拍照按钮
        /// </summary>
        public ToolStripStatusLabel toolStripStatusLabel拍照5
        {
            get
            {
                return this.相机拍照_toolStatusLabel;
            }
        }

        /// <summary>
        /// 第六个子窗体手动拍照按钮
        /// </summary>
        public ToolStripStatusLabel toolStripStatusLabel拍照6
        {
            get
            {
                return this.相机拍照_toolStatusLabel;
            }
        }
        #endregion

        #region 放大缩小
        /// <summary>
        /// 放大
        /// </summary>
        public ToolStripDropDownButton 放大Button1
        {
            get
            {
                return this.放大Button;
            }
        }

        public ToolStripDropDownButton 缩小Button1
        {
            get
            {
                return this.缩小Button;
            }
        }
        #endregion

    }
}

窗体设置按钮调用另一个子窗体截图及代码,本窗体是3行2列!

控件:

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 VMPro2024._08.WinForm
{
    public partial class WindFormSetting : Form
    {
        private int _row;

        public int cameraCount = 0;
        public int camerrow = 0;
        //public int cameraCount = 0; 

        public int Row
        {
            get { return _row; }
            set { _row = value; }
        }

        private int _column;
        public int Column
        {
            get { return _column; }
            set { _column = value; }
        }

        public WindFormSetting(int row, int column, Form parent)
        {
            this.Row = row;
            this.Column = column;
            InitializeComponent();

            this.StartPosition = FormStartPosition.Manual;
            this.Location = new Point(parent.Location.X + (parent.Size.Width / 2) - (this.Size.Width / 2),
                                    parent.Location.Y + (parent.Size.Height / 2) - (this.Size.Height));
            this.btnSetting.Click += new EventHandler(btnSetting_Click);

            //numRow = new NumericUpDown();
            //numColumn = new NumericUpDown();
            //mCamerCount(cameraCount);
        }
        public WindFormSetting()
        {

        }

        private void WindFormSetting_Load(object sender, EventArgs e)
        {
            this.numRow.Value = this.Row;
            this.numColumn.Value = this.Column;
        }

        private void btnSetting_Click(object sender, EventArgs e)
        {
            this.Row = Convert.ToInt32(this.numRow.Value);
            this.Column = Convert.ToInt32(this.numColumn.Value);

            this.Close();
        }

        /// <summary>
        /// 计算相机个数
        /// </summary>
        /// <param name="count"></param>
        //public int mCamerCount(int count)
        //{
            //用于计算相机个数
            //camerrow = Convert.ToInt32(this.numRow.Value);
            //camercolumn = Convert.ToInt32(this.numColumn.Value);

            //cameraCount = camerrow * camercolumn;//计算相机个数

            //return cameraCount;
        //}
        //设置行
        private void numRow_MouseDown(object sender, MouseEventArgs e)
        {
            if (this.numRow.Value <= 3)
            {
                this.numRow.Value++;
            }
        }

        private void numRow_MouseUp(object sender, MouseEventArgs e)
        {
            if (this.numRow.Value >= 2)
            {
                this.numRow.Value--;
            }
        }

        //设置列
        private void numColumn_MouseDown(object sender, MouseEventArgs e)
        {
            if (this.numColumn.Value <= 4)
            {
                this.numColumn.Value++;
            }
        }

        private void numColumn_MouseUp(object sender, MouseEventArgs e)
        {
            if (this.numColumn.Value >= 2)
            {
                this.numColumn.Value--;
            }
        }
    }
}


主窗体

主窗体代码:

#region 窗体个数变量
public DisplayControl[] displayControls = new DisplayControl[10];//显示控件
bool bEnlarge = false;//判断是否双击激活 cogRecordDisplay_DoubleClick事件
#endregion
//设置窗体个数
private void 窗体设置ToolStripMenuItem_Click(object sender, EventArgs e)
{
    WindFormSetting windFormSetting = new WindFormSetting(WindowConfig.gOnly.displayRow, WindowConfig.gOnly.displayColumn, this);
    windFormSetting.ShowDialog();
    DialogResult result = MessageBox.Show("是否重设显示个数", "选择按钮", MessageBoxButtons.YesNo);
    if (result == DialogResult.Yes)
    {
        WindowConfig.gOnly.displayRow = windFormSetting.Row;
        WindowConfig.gOnly.displayColumn = windFormSetting.Column;
        WindowConfig.SaveConfig();
        //需要添加窗体修改Log

        IniDisplayCount(windFormSetting.Row, windFormSetting.Column, true);
        LoadConfigXml(cameraCount);//计算相机个数
        WindowConfig.gOnly.cameraCount = Convert.ToInt32(cameraCount);//存储相机个数
        MessageBox.Show(cameraCount.ToString());
    }
    windFormSetting.Dispose();//窗体销毁
}

//初始化窗口 设置tableLayoutPanel的相关属性
private void IniDisplayCount(int RowCount, int ColumnCount, bool bChange)
{
    int displayCount = 0;
    tableLayoutPanel2.RowStyles.Clear();
    tableLayoutPanel2.ColumnStyles.Clear();
    tableLayoutPanel2.RowCount = RowCount;
    tableLayoutPanel2.ColumnCount = ColumnCount;

    for (int i = 0; i < tableLayoutPanel2.RowCount; i++)
    {
        tableLayoutPanel2.RowStyles.Add(new ColumnStyle(SizeType.Percent, 50));
    }

    for (int i = 0; i < tableLayoutPanel2.ColumnCount; i++)
    {
        tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
    }

    if (bChange)
    {
        for (int i = 0; i < displayControls.Length; i++)
        {
            if (displayControls[i] != null)
            {
                if (i == 0)
                    displayControls[i].cogRecordDisplay.DoubleClick -= cogRecordDisplay1_DoubleClick;
                if (i == 1)
                    displayControls[i].cogRecordDisplay.DoubleClick -= cogRecordDisplay2_DoubleClick;
                if (i == 2)
                    displayControls[i].cogRecordDisplay.DoubleClick -= cogRecordDisplay3_DoubleClick;
                if (i == 3)
                    displayControls[i].cogRecordDisplay.DoubleClick -= cogRecordDisplay4_DoubleClick;
                if (i == 4)
                    displayControls[i].cogRecordDisplay.DoubleClick -= cogRecordDisplay5_DoubleClick;
                if (i == 5)
                    displayControls[i].cogRecordDisplay.DoubleClick -= cogRecordDisplay6_DoubleClick;
                displayControls[i].Dispose();
                displayControls[i] = null;
            }
        }
    }
    for (int i = 0; i < RowCount; i++)
    {
        for (int j = 0; j < ColumnCount; j++)
        {
            displayControls[displayCount] = new DisplayControl();
            displayControls[displayCount].IniDisplay();
            displayControls[displayCount].Dock = DockStyle.Fill;
            tableLayoutPanel2.Controls.Add(displayControls[displayCount], j, i);
            if (i == 0 && j == 0)
                displayControls[displayCount].cogRecordDisplay.DoubleClick += cogRecordDisplay1_DoubleClick;
            if (i == 0 && j == 1)
                displayControls[displayCount].cogRecordDisplay.DoubleClick += cogRecordDisplay2_DoubleClick;
            if (i == 1 && j == 0)
                displayControls[displayCount].cogRecordDisplay.DoubleClick += cogRecordDisplay3_DoubleClick;
            if (i == 1 && j == 1)
                displayControls[displayCount].cogRecordDisplay.DoubleClick += cogRecordDisplay4_DoubleClick;
            if (i == 2 && j == 0)
                displayControls[displayCount].cogRecordDisplay.DoubleClick += cogRecordDisplay5_DoubleClick;
            if (i == 2 && j == 1)
                displayControls[displayCount].cogRecordDisplay.DoubleClick += cogRecordDisplay6_DoubleClick;
            displayCount++;
        }
    }
}

#region 双击全窗口显示 恢复
private void cogRecordDisplay1_DoubleClick(object sender, EventArgs e)
{
    Cognex.VisionPro.CogRecordDisplay recordDisplay = sender as Cognex.VisionPro.CogRecordDisplay;
    if (bEnlarge)
    {
        //再次双击鼠标恢复               
        bEnlarge = false;

        tableLayoutPanel2.Controls.Add(displayControls[0]);
        displayControls[0].SendToBack();
        displayControls[0].Parent = tableLayoutPanel2;
        displayControls[0].Dock = DockStyle.Fill;
        
        tableLayoutPanel2.Show();
    }
    else
    {
        //双击鼠标放大
        bEnlarge = true;

        tableLayoutPanel2.Controls.Remove(displayControls[0]);
        displayControls[0].Parent = this;
        displayControls[0].BringToFront();
        displayControls[0].Dock = DockStyle.Fill;
       
        tableLayoutPanel2.Hide();
    }
}

private void cogRecordDisplay2_DoubleClick(object sender, EventArgs e)
{
    Cognex.VisionPro.CogRecordDisplay recordDisplay = sender as Cognex.VisionPro.CogRecordDisplay;
    if (bEnlarge)
    {
        //再次双击鼠标恢复               
        bEnlarge = false;

        tableLayoutPanel2.Controls.Add(displayControls[1]);
        displayControls[1].SendToBack();
        displayControls[1].Parent = tableLayoutPanel2;
        displayControls[1].Dock = DockStyle.Fill;
        tableLayoutPanel2.Show();
    }
    else
    {
        //双击鼠标放大
        bEnlarge = true;

        tableLayoutPanel2.Controls.Remove(displayControls[1]);
        displayControls[1].Parent = this;
        displayControls[1].BringToFront();
        displayControls[1].Dock = DockStyle.Fill;
        tableLayoutPanel2.Hide();
    }
}

private void cogRecordDisplay3_DoubleClick(object sender, EventArgs e)
{
    Cognex.VisionPro.CogRecordDisplay recordDisplay = sender as Cognex.VisionPro.CogRecordDisplay;
    if (bEnlarge)
    {
        //再次双击鼠标恢复               
        bEnlarge = false;

        tableLayoutPanel2.Controls.Add(displayControls[2]);
        displayControls[2].SendToBack();
        displayControls[2].Parent = tableLayoutPanel2;
        displayControls[2].Dock = DockStyle.Fill;
        tableLayoutPanel2.Show();
    }
    else
    {
        //双击鼠标放大
        bEnlarge = true;

        tableLayoutPanel2.Controls.Remove(displayControls[2]);
        displayControls[2].Parent = this;
        displayControls[2].BringToFront();
        displayControls[2].Dock = DockStyle.Fill;
        tableLayoutPanel2.Hide();
    }
}

private void cogRecordDisplay4_DoubleClick(object sender, EventArgs e)
{
    Cognex.VisionPro.CogRecordDisplay recordDisplay = sender as Cognex.VisionPro.CogRecordDisplay;
    if (bEnlarge)
    {
        //再次双击鼠标恢复               
        bEnlarge = false;

        tableLayoutPanel2.Controls.Add(displayControls[3]);
        displayControls[3].SendToBack();
        displayControls[3].Parent = tableLayoutPanel2;
        displayControls[3].Dock = DockStyle.Fill;
        tableLayoutPanel2.Show();
    }
    else
    {
        //双击鼠标放大
        bEnlarge = true;

        tableLayoutPanel2.Controls.Remove(displayControls[3]);
        displayControls[3].Parent = this;
        displayControls[3].BringToFront();
        displayControls[3].Dock = DockStyle.Fill;
        tableLayoutPanel2.Hide();
    }
}

private void cogRecordDisplay5_DoubleClick(object sender, EventArgs e)
{
    Cognex.VisionPro.CogRecordDisplay recordDisplay = sender as Cognex.VisionPro.CogRecordDisplay;
    if (bEnlarge)
    {
        //再次双击鼠标恢复               
        bEnlarge = false;

        tableLayoutPanel2.Controls.Add(displayControls[4]);
        displayControls[4].SendToBack();
        displayControls[4].Parent = tableLayoutPanel2;
        displayControls[4].Dock = DockStyle.Fill;
        tableLayoutPanel2.Show();
    }
    else
    {
        //双击鼠标放大
        bEnlarge = true;

        tableLayoutPanel2.Controls.Remove(displayControls[4]);
        displayControls[4].Parent = this;
        displayControls[4].BringToFront();
        displayControls[4].Dock = DockStyle.Fill;
        tableLayoutPanel2.Hide();
    }
}

private void cogRecordDisplay6_DoubleClick(object sender, EventArgs e)
{
    Cognex.VisionPro.CogRecordDisplay recordDisplay = sender as Cognex.VisionPro.CogRecordDisplay;
    if (bEnlarge)
    {
        //再次双击鼠标恢复               
        bEnlarge = false;

        tableLayoutPanel2.Controls.Add(displayControls[5]);
        displayControls[5].SendToBack();
        displayControls[5].Parent = tableLayoutPanel2;
        displayControls[5].Dock = DockStyle.Fill;
        tableLayoutPanel2.Show();
    }
    else
    {
        //双击鼠标放大
        bEnlarge = true;

        tableLayoutPanel2.Controls.Remove(displayControls[5]);
        displayControls[5].Parent = this;
        displayControls[5].BringToFront();
        displayControls[5].Dock = DockStyle.Fill;
        tableLayoutPanel2.Hide();
    }
}
#endregion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钢铁男儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值