1.功能描述
涉及子窗体的创建过程,子窗体的调用操作,子窗体与主窗体的显示位置设置,子窗体随主窗体移动
2.代码部分
步骤1:新建button并修改Text
步骤2:在现工程中新建项目
步骤3:选择窗体修改窗体名称
步骤4:创建好新窗体
步骤5:定义新窗体私有变量,通过类声明一个变量
//定义子窗体变量,供主窗体使用
private static WaveForm WaveForm;
步骤6:编辑波形显示按钮事件
实现功能1:点击按钮弹出子窗体,关闭子窗体,再次点击则再次弹出窗体,窗体存在时无法通过点击按钮显示更多相同子窗体
//第一次创建WaveForm实体
if (WaveForm == null)
{
//创建新窗体
WaveForm = new WaveForm();
}
else
{
//多次创建通过判断IsDisposed确定窗口是否已经关闭,避免同窗口多开
if (WaveForm.IsDisposed == true)//判断该控件有无释放,若释放则重新创建窗体
{
//如果窗体已经关闭,需要重新创新
WaveForm = new WaveForm();
}
}
//新建窗体
//WaveForm = new WaveForm();//发现不用if语句判断直接创建窗体也能实现一样的功能
//窗体展示
WaveForm.Show();
实现功能2:子窗体紧靠主窗体位置显示
//设置波形窗体紧靠主窗体
this.Left = 0;//主窗体左边的坐标为0
WaveForm.Location = this.Location;//主窗体坐标赋给子窗体
WaveForm.Left = this.Right;//主窗体的右显示坐标赋给子窗体左显示坐标
实现功能3:主窗体位置改变事件,子窗体随主窗体位置移动
//主窗体位置改变事件
private void Form1_LocationChanged(object sender, EventArgs e)
{
//如果子窗体打开
if (WaveForm != null)
{
WaveForm.Location = this.Location;//主窗体坐标赋给子窗体
WaveForm.Left = this.Right;//主窗体的右显示坐标赋给子窗体左显示坐标
}
}
3.完整代码
//定义子窗体变量,供主窗体使用
private static WaveForm WaveForm;
//波形显示按钮事件
private void button30_Click(object sender, EventArgs e)
{
//第一次创建WaveForm实体
if (WaveForm == null)
{
//创建新窗体
WaveForm = new WaveForm();
}
else
{
//多次创建通过判断IsDisposed确定窗口是否已经关闭,避免同窗口多开
if (WaveForm.IsDisposed == true)//判断该控件有无释放,若释放则重新创建窗体
{
//如果窗体已经关闭,需要重新创新
WaveForm = new WaveForm();
}
}
//新建窗体
//WaveForm = new WaveForm();//发现不用if语句判断直接创建窗体也能实现一样的功能
//窗体展示
WaveForm.Show();
//设置波形窗体紧靠主窗体
this.Left = 0;//主窗体左边的坐标为0
WaveForm.Location = this.Location;//主窗体坐标赋给子窗体
WaveForm.Left = this.Right;//主窗体的右显示坐标赋给子窗体左显示坐标
}
//主窗体位置改变事件-主窗体随子窗体移动
private void Form1_LocationChanged(object sender, EventArgs e)
{
//如果子窗体打开
if (WaveForm != null)
{
WaveForm.Location = this.Location;//主窗体坐标赋给子窗体
WaveForm.Left = this.Right;//主窗体的右显示坐标赋给子窗体左显示坐标
}
}
4.测试结果
点击波形显示按钮,弹出波形显示子窗体,且按照预设位置进行窗体展示,子窗体随主窗体移动,功能添加成功,
参考自B站硬件家园