自定义控件界面及控件如下
控件列表
自定义控件代码:
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;
//titleForm.LockControl(true);
//titleForm.MdiParent = this;
//titleForm.Dock=DockStyle.Fill;
//titleForm.Show();
}
public void IniDisplay()
{
this.cogDisplayStatusBarV21.Display = this.cogRecordDisplay1;
this.cogDisplayToolbarV21.Display = this.cogRecordDisplay1;
this.cogRecordDisplay1.AutoFit = true;
}
public CogRecordDisplay cogRecordDisplay
{
get { return this.cogRecordDisplay1; }
}
public ToolStripStatusLabel toolStripStatusLabel
{
get
{
return this.相机实时_toolStripLabel;
}
}
}
}
窗体设置按钮调用另一个子窗体截图及代码
控件:
代码:
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)
{
displayControls[i].cogRecordDisplay.DoubleClick -= cogRecordDisplay_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);
displayControls[displayCount].cogRecordDisplay.DoubleClick += cogRecordDisplay_DoubleClick;
displayCount++;
}
}
}
private void cogRecordDisplay_DoubleClick(object sender, EventArgs e)
{
Cognex.VisionPro.CogRecordDisplay recordDisplay = sender as Cognex.VisionPro.CogRecordDisplay;
if (bEnlarge)
{
bEnlarge = false;
tableLayoutPanel2.Controls.Add(recordDisplay.Parent);
//panel2.Controls.Add(recordDisplay.Parent);
recordDisplay.Parent.Parent = tableLayoutPanel2;
recordDisplay.Parent.Dock = DockStyle.Fill;
tableLayoutPanel2.Show();
}
else
{
bEnlarge = true;
tableLayoutPanel2.Controls.Remove(recordDisplay.Parent);
//panel2.Controls.Remove(recordDisplay.Parent);
recordDisplay.Parent.Parent = this;
recordDisplay.Parent.BringToFront();
recordDisplay.Parent.Dock = DockStyle.Fill;
tableLayoutPanel2.Hide();
//panel2.Hide();
}
}
琐碎时间阅读基础知识,详情关注微信公众号“知识代码AI”。