天天看点

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

<a href="http://kb.cnblogs.com/page/47339">基于.NET平台的Windows编程实战(一)——前言</a>

<a href="http://kb.cnblogs.com/page/47340">基于.NET平台的Windows编程实战(二)—— 需求分析与数据库设计</a>

<a href="http://kb.cnblogs.com/page/47342">基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写</a>

<a href="http://kb.cnblogs.com/page/47403">基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现</a>

<a href="http://kb.cnblogs.com/page/47404">基于.NET平台的Windows编程实战(六)—— 题目管理功能的实现</a>

OK!下载了DockPanel控件后,我们将其(即WeifenLuo.WinFormsUI.Docking.dll文件)COPY到前面创建的QuestionnaireSystem项目中的bin文件夹中,并添加到项目的引用中去,方法如下:右击项目名称或右击“引用”-à“添加引用……”,在弹出的对话框中选择浏览选项卡,并找到刚才COPY到项目中的WeifenLuo.WinFormsUI.Docking.dll文件,点“确定”即可,如下图5-1所示:

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

图5-1

DockPanel引入成功后,我们便可以将其做为放到工具箱中像其它控件一样使用了,下面我们将其添加到工具箱:在左边工具箱下面的空白处右击-à“选择项”-à在弹出的对话框中点击“浏览”并找到COPY到项目中的WeifenLuo.WinFormsUI.Docking.dll并打开,之后如下图5-2所示,再点击“确定”,即可发现左边的工具箱下面多了个DockPanel控件,这表示添加成功了。

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

图5-2

打开之前我们创建的主窗口MainFrom,并把刚才添加到工具箱的DockPanel控件拉到其界面的空白处,将其Name属性设为dockPanel,并点击如下图5-3所示的“在父容器中停靠”,使其停靠到父容器中。

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

图5-3

好!打住!主窗口MainFrom的设置先到这里,后面我们再接着设置。

下面我们先来创建一个母窗口吧,以便之后各窗口继承。方法:右击项目名-à“添加”-à“Windows窗体”,在弹出的对话框中进入“SurveryWin”,点“确定”即可,如下图5-4所示:

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

图5-4

并设置如下属性:

BackColor:White

Icon:设置成项目文件夹Images中的logo.ico图片

Text:设为空,也可以不设

之后,往窗体中拉入一个ContextMenuStrip控件,将其Name设为” CMenuStrip”,并在其第一个子项目上输入“关闭”,如下图5-5所示:

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

图5-5

之后,在“关闭”上双击,进入代码编辑器,将其代码改写成如下所示:

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

Code

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

using System;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

using System.Collections.Generic;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

using System.ComponentModel;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

using System.Data;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

using System.Drawing;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

using System.Text;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

using System.Windows.Forms;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

using WeifenLuo.WinFormsUI.Docking;//引入第三方开源控件DockPanel类库

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

namespace LJ_QuestionnaireSystem

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

{

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

//将这里的默认继承From改成DockContent,以使其继承于第三方控件的DockContent类

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

    public partial class SurveryWin : DockContent 

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        public SurveryWin()

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            InitializeComponent();

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        }

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

/**//// 

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        /// 以便用户右击窗口标题时进行关闭当前窗口

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        /// 

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            this.Close();//关闭当前窗口

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

    }

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

}

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

到这里,母窗口算是创建好了,下面就让我们分别来创建问卷添加、问卷编辑、预览问卷、问卷管理四个窗口,依次命名为SurveyAdd、SurveyModify、SurveyPreview、SurveyManage,(创建方法同上面的母窗口的创建一样,在此以及以后的课程中将不再多说),并都使其继承于SurveyWin母窗口,继承的方法也与上面一样,将对应类后面继承的From改成SurveyWin即可,下面以SurveyAdd窗口为例进行讲解说明:

原来为:

public partial class SurveyAdd :From

现在改成:

public partial class SurveyAdd :SurveryWin

之后,往SurveyAdd窗口中拉入相应的控件,并设置成如下图5-6所示,具体的属性设置请下载下面的本课程源码进行查看:

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

图5-6

    其对应的代码改成如下所示:

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

using System.Windows.Forms; 

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

    public partial class SurveyAdd :SurveryWin

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        public SurveyAdd()

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            BindDataSurvey();//绑定问卷列表

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        DbOperate dboperate = new DbOperate();//实例化一个数据库操作对象,用于操作数据

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        /**//// 

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        /// 添加问卷

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        private void SAddBtn_Click(object sender, EventArgs e)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            string SName = SNameText.Text.Trim();//获取输入的问卷名

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            string isExistSv = "Select Count(id) From Lj_Survey Where Survey_Name='" + SName + "'";

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            string SPople = SPopleText.Text.Trim();//获取输入的发起者

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            int OutCount = Convert.ToInt32(OutCountTxt.Text.Trim());//获取输入的发放份数 

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            DateTime dtime = SDTimePicker.Value;//获取发放时间

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            string sql = "Insert into Lj_Survey (survey_Name,survey_Sponsor,survey_OutCount,survey_DateTime) ";

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            sql += " values('" + SName + "','" + SPople + "'," + OutCount + ",'" + dtime.ToShortDateString() + "')";

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            if (SName == "" || SPople == "")//判断是否输入了问卷名及发起者,如果没有,则提示

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                MessageBox.Show("请输入问卷名称或发起者!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            }

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            else if (dboperate.ExcuteScrSql(isExistSv) &gt; 0)//判断输入的问卷是否已经存在,如存在,则提示

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                //MessageBox.Show("已存在此问卷,请重新输入问卷名!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                IsExistSLab.Visible = true;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            else

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                IsExistSLab.Visible = false;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                if (Convert.ToInt32(dboperate.ExcuteIntSql(sql)) &gt; 0) //如果执行成功,则提示成功,反之提示失败

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                    if (MessageBox.Show("添加成功!请刷新列表!是否继续添加?", "操作提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                        SurveyCancel();//清空所填数据

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                        SListBox.Items.Clear();//清空绑定的问卷项

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                        BindDataSurvey();//重新绑定问卷

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                    }

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                    else

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                        this.Close(); //关闭当前窗口

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                }

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                else

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                    MessageBox.Show("添加失败!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        private void SCancelBtn_Click(object sender, EventArgs e)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            SurveyCancel();//清空所填数据

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        /// 绑定问卷列表

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        private void BindDataSurvey()

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            string surveySql = "Select Survey_Name From Lj_Survey";//查询问卷的SQL语句

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            DataTable sdt = dboperate.GetDataTable(surveySql);//获取问卷数据表

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            if (sdt.Rows.Count &gt; 0) //如果问卷存在,则执行如下操作

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                Object[] items = new object[sdt.Rows.Count];//实例化一个对象数组,用于存放读出的问卷名

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                for (int i = 0; i &lt; sdt.Rows.Count; i++) //循环读出问卷名

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                    items[i] = (i + 1) + "." + sdt.Rows[i][0].ToString();

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                SListBox.Items.AddRange(items);//将问卷名绑定到SlistBox控件上

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        /// 清空所填数据

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        private void SurveyCancel()

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            SNameText.Text = "";

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            SPopleText.Text = "";

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            OutCountTxt.Text = "0"; 

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        private void SNameText_MouseLeave(object sender, EventArgs e)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            //查询输入的问卷名是否已经存在,如果存在,则给出提示

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            if (dboperate.ExcuteScrSql(isExistSv) &gt; 0)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

以上的代码在这里就不用再进行讲解了吧,上面的注释已经写的很清楚了^_^

至于其它三个窗口的设置,与上面的大同小异,就不一一列出来了,请大家自行下载下面的本课程源码进行对照设置吧。

创建好各窗口后,让我们再回到主窗口MainFrom中来进行相对应的关联设置吧!

先在MianFrom中引入DockPanel,如下所示:

using WeifenLuo.WinFormsUI.Docking;

再分别给主菜单 “问卷”下面的子选项以及工具栏中的:“添加问卷”与“问卷管理” 添加Click事件及ItemClick事件,并写一个用来查找已打开窗口的方法FindDocument(string text),用来判断哪些窗口已经打开了,哪些窗口还没有打开,具体代码如下所示:

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        /// 在dockPanel中查找已经打开的窗口

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        /// 传入的窗口标题

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        /// 返回的窗口

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        private IDockContent FindDocument(string text)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            if (dockPanel.DocumentStyle == DocumentStyle.SystemMdi)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                foreach (Form form in MdiChildren)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                    if (form.Text == text)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                        return form as IDockContent;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                return null;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                foreach (IDockContent content in dockPanel.Documents)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                    if (content.DockHandler.TabText == text)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                        return content;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        private void SNTStripMenuItem_Click(object sender, EventArgs e)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            SurveyAdd sadd = new SurveyAdd();

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            sadd.ShowDialog();

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        /// 问卷管理

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        private void SToolStripMenuItem_Click(object sender, EventArgs e)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

         //判断问卷管理窗口是否已经打开了,如果没有打开,则打开,否则将将焦点移到问卷管理窗口上

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            if (FindDocument("问卷管理") == null)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                SurveyManage sm = new SurveyManage();

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                sm.Show(dockPanel);

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                Form f = FindDocument("问卷管理") as Form;

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                f.Focus();

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        /// 工具菜单

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

        private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            if (e.ClickedItem == SMaTooScriptBtn)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                SToolStripMenuItem_Click(null, null); 

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

            else if (e.ClickedItem == SAddToolScriptBtn)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                SNTStripMenuItem_Click(null, null); 

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

最后,我们修改一下主窗口的Load事件,以便启动系统时能打开问卷管理窗口,代码如下所示:

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

private void MainForm_Load(object sender, EventArgs e)

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

{  

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现

                sm.Show(this.dockPanel); 

艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现