/// <summary>
/// 调整画面布局
/// </summary>
/// <param name="videoNum"></param>
/// <returns></returns>
private bool InitializeVideo(int videoNum)
{
//计算行列
int rowcol;
if (videoNum <= 0 || !int.TryParse(Math.Sqrt(videoNum).ToString(), out rowcol))
{
return false;
}
//计算宽高
int WidthHeight = (int)(MainPanel.Width / rowcol);
//重新设置表格
//MainPanel为TableLayoutPanel控件
MainPanel.Controls.Clear();
MainPanel.RowCount = MainPanel.ColumnCount = rowcol;
MainPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
MainPanel.Refresh();
for (int i = 0; i < MainPanel.ColumnStyles.Count; i++)
{
MainPanel.ColumnStyles[i].SizeType = SizeType.Absolute;
MainPanel.ColumnStyles[i].Width = WidthHeight;
}
for (int i = 0; i < MainPanel.RowStyles.Count; i++)
{
MainPanel.RowStyles[i].SizeType = SizeType.Absolute;
MainPanel.RowStyles[i].Height = WidthHeight;
}
//添加控件
for (int i = 0; i < videoNum; i++)
{
PictureBox pVideo = new PictureBox();
pVideo.Padding = pVideo.Margin = new Padding(0);
pVideo.Name = "pVideo" + i.ToString();
pVideo.Width = pVideo.Height = WidthHeight;
pVideo.Dock = DockStyle.Fill;
pVideo.BackgroundImage = Resources.bg;
pVideo.BackgroundImageLayout = ImageLayout.Stretch;
pVideo.Click += new EventHandler(pVideo_Click);
MainPanel.Controls.Add(pVideo, i % rowcol, i / rowcol);
}
return true;
}
/// <summary>
/// 点击图像事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pVideo_Click(object sender, EventArgs e)
{
PictureBox pVideo = (PictureBox)sender;
//MessageBox.Show(pVideo.Name);
if (MainPanel.GetColumnSpan(pVideo) == 1)
{
//隐藏其它控件
foreach (Control ctr in MainPanel.Controls)
{
if (ctr.Name != pVideo.Name)
ctr.Visible = false;
}
pos = MainPanel.GetPositionFromControl(pVideo);
MainPanel.SetCellPosition(pVideo, new TableLayoutPanelCellPosition(0, 0));
MainPanel.SetRowSpan(pVideo, MainPanel.RowCount);
MainPanel.SetColumnSpan(pVideo, MainPanel.ColumnCount);
}
else
{
//显示所有控件
foreach (Control ctr in MainPanel.Controls)
{
ctr.Visible = true;
}
MainPanel.SetCellPosition(pVideo, pos);
MainPanel.SetRowSpan(pVideo, 1);
MainPanel.SetColumnSpan(pVideo, 1);
}
}