当前位置: 移动技术网 > IT编程>开发语言>.net > C#中使用MVC架构(四)

C#中使用MVC架构(四)

2020年07月17日  | 移动技术网IT编程  | 我要评论

六、实现视图层NewsManager

 

  1. 用户登录

 

登录按键处理事件

private void button1_Click(object sender, EventArgs e)

        {

            UserLogin login = new UserLogin();

            String name = this.userNameTbx.Text;

            String pwd = this.pwdTbx.Text;

 

            User user=login.login(name,pwd);

            if (user!=null)

            {

                if (user.Uname.Equals("admin"))

                {

                    BackManage backManage = new BackManage();

                    backManage.UserLogin = user;

                    backManage.Show();

                }else

                 {

                    MainForm mainForm = new MainForm();

                    mainForm.Show();

                 }

                this.Visible = false;                

            }

            else

            {

                msgLbl.Text = "提示:用户或密码不正确!";

                msgLbl.Visible = true;

            }

            if (count > 3)

            {

                MessageBox.Show("输入非法超过三次,系统将关闭!", CAPTION, MessageBoxButtons.OK, MessageBoxIcon.Warning);

                Application.Exit();

            }

            else

            {

                count++;

            }

        }

  1. 后台管理

 

窗体作为视图,访问BLL层的基本业务接口。baseService接口对象作为业务层总中介,在用户点击管理对象的子菜单时,指向各个具体的业务实现类,实现视图与用户业务的解耦。

private void 用户管理ToolStripMenuItem_Click(object sender, EventArgs e)

        {            

            //设置菜单选中状态

            用户管理ToolStripMenuItem.Checked =! 用户管理ToolStripMenuItem.Checked;

            栏目管理ToolStripMenuItem.Checked = false;

            新闻管理ToolStripMenuItem.Checked = false;

            objLbl.Text = "当前对象:用户管理";

            UserService user=new UserService();

            baseService = user;//接口引用用户服务类对象

            bdService = user;  //抽象类引用用户服务类对象

        }

baseService接口指向不同的业务对象,将响应不同业务,即接口响应多态的实现。需要判断当前的baseService接口对象指向了哪一个业务类,判断时,初始化对应业务的添加窗体,并向窗体传递委托事件,传递添加数据的委托

private void 增加ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            toolStripStatusLabel3.Text = "添加数据。。。";

            //打开编辑窗口

            if (baseService is UserService)

            {

                UserForm userForm = new UserForm();

                //向用户窗体传递委托事件

                userForm.adet = baseService.add;

                userForm.ShowDialog();//显示为模态对话框

            }

            if (baseService is TopicService)

            {

                TopicForm topic = new TopicForm();

                //传递委托事件

                topic.adet = baseService.add;

                topic.ShowDialog();

            }

            if(baseService is NewsService)

            {

                NewsForm newsForm = new NewsForm();

                //传递委托事件

                newsForm.adet = baseService.add;

                newsForm.ShowDialog();

            }            

            toolStripStatusLabel3.Text = bdService.Msg;

 

        }

总体代码如下:

public partial class BackManage : Form    {

        

        IBaseService baseService;//引用基本业务接口

        BaseDataService bdService;

        MODEL.User userLogin=null;//保存登录用户对象

 private void BackManage_Load(object sender, EventArgs e)

        {

            loginLbl.Text = userLogin.Uname +":登录";

            //绑定事件,用户在点击对象管理后,调用列表事件

            this.用户管理ToolStripMenuItem.Click += this.列表ToolStripMenuItem_Click;

            this.栏目管理ToolStripMenuItem.Click += this.列表ToolStripMenuItem_Click;

            this.新闻管理ToolStripMenuItem.Click += this.列表ToolStripMenuItem_Click;

            //给操作crud绑定列表事件

            this.增加ToolStripMenuItem.Click += this.列表ToolStripMenuItem_Click;

            this.删除ToolStripMenuItem.Click += this.列表ToolStripMenuItem_Click;

            this.修改ToolStripMenuItem.Click += this.列表ToolStripMenuItem_Click;            

 

            this.toolStripStatusLabel2.Text = "登录时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");

            this.toolStripStatusLabel3.Text = "操作状态";

        }

        //****************设置菜单选中状态*****************

        private void 用户管理ToolStripMenuItem_Click(object sender, EventArgs e)

        {            

            //设置菜单选中状态

            用户管理ToolStripMenuItem.Checked =! 用户管理ToolStripMenuItem.Checked;

            栏目管理ToolStripMenuItem.Checked = false;

            新闻管理ToolStripMenuItem.Checked = false;

            objLbl.Text = "当前对象:用户管理";

            UserService user=new UserService();

            baseService = user;//接口引用用户服务类对象

            bdService = user;  //抽象类引用用户服务类对象

        }

 

        private void 栏目管理ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            栏目管理ToolStripMenuItem.Checked = !栏目管理ToolStripMenuItem.Checked;

            用户管理ToolStripMenuItem.Checked = false;

            新闻管理ToolStripMenuItem.Checked = false;

            objLbl.Text = "当前对象:栏目管理";

            TopicService topic = new TopicService();//接口引用标题栏对象

            baseService = topic;

                        

        }

 

        private void 新闻管理ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            新闻管理ToolStripMenuItem.Checked = ! 新闻管理ToolStripMenuItem.Checked;

            用户管理ToolStripMenuItem.Checked = false;

            栏目管理ToolStripMenuItem.Checked = false;

            objLbl.Text = "当前对象:新闻管理";

            baseService = new NewsService();//接口引用新闻帖类对象

        }

        /*****************************************管理操作**********************************************************/

        private void 列表ToolStripMenuItem_Click(object sender, EventArgs e)

        {            

            BindingSource bs=baseService.list();

            dataGridView1.DataSource = bs;

            dataGridView1.ReadOnly = true;

            bindingNavigator1.BindingSource =bs;

        }

 

        private void 增加ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            toolStripStatusLabel3.Text = "添加数据。。。";

            //打开编辑窗口

            if (baseService is UserService)

            {

                UserForm userForm = new UserForm();

                //向用户窗体传递委托事件

                userForm.adet = baseService.add;

                userForm.ShowDialog();//显示为模态对话框

            }

            if (baseService is TopicService)

            {

                TopicForm topic = new TopicForm();

                //传递委托事件

                topic.adet = baseService.add;

                topic.ShowDialog();

            }

            if(baseService is NewsService)

            {

                NewsForm newsForm = new NewsForm();

                //传递委托事件

                newsForm.adet = baseService.add;

                newsForm.ShowDialog();

            }            

            toolStripStatusLabel3.Text = bdService.Msg;

 

        }

 

        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            toolStripStatusLabel3.Text = "删除数据。。。";

            //int index =Convert.ToInt32(bindingNavigatorPositionItem.Text);//需要减1

            int index2 = dataGridView1.CurrentRow.Index;

            int id = (int)dataGridView1.Rows[index2].Cells[0].Value;

            baseService.delete(id);

            toolStripStatusLabel3.Text = bdService.Msg;

        }

 

        private void 查询ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            dataGridView1.DataSource = null;

            toolStripStatusLabel3.Text = "查询数据。。。";

            String name = searchTbx.Text;

            if (name!=null && name.Length > 0)

            {

                BindingSource bs = baseService.getByName(name);

                dataGridView1.DataSource = bs;

                dataGridView1.ReadOnly = true;

                dataGridView1.Refresh();

                //给控件绑定数据源

                bindingNavigator1.BindingSource = bs;

            }

            else

            {

                toolStripStatusLabel3.Text = "请先输入查询的数据!";

            }

            toolStripStatusLabel3.Text = bdService.Msg;

        }

 

        private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            toolStripStatusLabel3.Text = "修改数据。。。";

            //打开修改窗口

            if (baseService is UserService)

            {

                UserForm userForm = new UserForm();

                userForm.Text = "编辑用户";

                //取当前记录的索引

                int index2 = dataGridView1.CurrentRow.Index;

                int id = (int)dataGridView1.Rows[index2].Cells[0].Value;

                //取得编辑的对象

                User user = (User)baseService.getById(id);

                //传递用户窗体编的数据

                userForm.user = user;

                //向用户窗体添加委托事件

                userForm.adet = baseService.edit;

                userForm.ShowDialog();//显示为模态对话框

            }

            if (baseService is TopicService)

            {

                TopicForm topicForm = new TopicForm();

                topicForm.Text = "编辑栏目";

                //取当前记录的索引

                int index2 = dataGridView1.CurrentRow.Index;

                int id = (int)dataGridView1.Rows[index2].Cells[0].Value;

                Topic topic = (Topic)baseService.getById(id);

                //传递编辑数据

                topicForm.topic = topic;

                //向用户窗体添加委托事件

                topicForm.adet = baseService.edit;

                //显示为模态对话框

                topicForm.ShowDialog();

            }

            if (baseService is NewsService)

            {

                NewsForm newsForm = new NewsForm();

                newsForm.Text = "编辑新闻";

                //取当前记录的索引

                int index2 = dataGridView1.CurrentRow.Index;

                int id = (int)dataGridView1.Rows[index2].Cells[0].Value;

                News news = (News)baseService.getById(id);

                //传递编辑数据

                newsForm.news = news;

                //向用户窗体添加委托事件

                newsForm.adet = baseService.edit;

                newsForm.ShowDialog();

            }

            toolStripStatusLabel3.Text = bdService.Msg;

        }

 

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

        {

            toolStripStatusLabel3.Text = "退出系统。。。";

            System.Environment.Exit(0);

        }

}

3、新闻添加更新操作

 

 public partial class NewsForm : Form

    {

        //声明委托

        public delegate void AddEdit(News news);

        public AddEdit adet;//定义委托对象

        public News news;

        TopicService topicService;

        int nid;

        

        public NewsForm()

        {

            InitializeComponent();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            int nid=this.nid;

            int ntid=topicCmbox.SelectedIndex;

            String ntitle=titleTbx.Text;

            String nauthor=authorTbx.Text;

            String npicpath=this.pictureBox1.ImageLocation.ToString();

            String ncontent=contextRchTxt.Text;           

            String summary=summaryTbx.Text;

            News news = new News(nid, 2, ntitle, nauthor, new DateTime(), npicpath, ncontent, new DateTime(), summary);

            //调用委托,添加编辑数据

            adet(news);

        }

 

        private void NewsForm_Load(object sender, EventArgs e)

        {            

            topicService = new TopicService();

            BindingSource bs=topicService.list();            

            topicCmbox.ValueMember = "序号";//tid 的别名

            topicCmbox.DisplayMember = "栏目名称"; //tname的别名

            topicCmbox.DataSource = bs;

            topicCmbox.SelectedIndex = 0;//自动选中列表第一项

 

            this.pictureBox1.Load("C:\\Users\\zgd\\Pictures\\book2.jpg");

            if (news != null)

            {

                nid = news.Nid;

                titleTbx.Text = news.Ntitle;

                authorTbx.Text = news.Nauthor;

                topicCmbox.SelectedIndex = news.Ntid;

                summaryTbx.Text = news.Summary;

                contextRchTxt.Text = news.Ncontent;

                this.pictureBox1.ImageLocation = news.Npicpath;

            }

        }

 

        private void button4_Click(object sender, EventArgs e)

        {

            openFileDialog1.InitialDirectory = ".";

            openFileDialog1.Filter = "图片格式(*.jpg)|*.jpg|png文件(*.png)|*.png|位图文件(*.bmp)|*.bmp|所有文件(*.*)|*.*";

            openFileDialog1.Multiselect = false;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)

            {

                string filePath = openFileDialog1.FileName;

                int pos = filePath.LastIndexOf("\\");

                string fileName = filePath.Substring(pos + 1);

                pictureBox1.ImageLocation = filePath;

                using (Stream stream = openFileDialog1.OpenFile())

                {

                    using (FileStream fs = new FileStream(@"../../img/" + fileName, FileMode.CreateNew))

                    {

                        stream.CopyTo(fs);

                        fs.Flush();

                    }

                }

            }

        }

 

        private void button5_Click(object sender, EventArgs e)

        {

            openFileDialog1.InitialDirectory = ".";

            openFileDialog1.Filter = "所有文件(*.*)|*.*";

            openFileDialog1.ShowDialog();

            if (openFileDialog1.FileName != String.Empty)

            {

                String pathname = openFileDialog1.FileName;

                this.pictureBox1.Load(pathname);

            }

        }

    }

4、标题添加更新操作

 

public partial class TopicForm : Form

    {

        //声明添加编辑委托

        public delegate void AddEdit(Topic topic);

        public AddEdit adet;//定义委托对象

        public Topic topic;

        int tid;

        public TopicForm()

        {

            InitializeComponent();

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            this.Close();

        }

 

        private void button1_Click(object sender, EventArgs e)        {

            

            String name = nameTbx.Text;

            Topic newTopic = new Topic(this.tid, name);

            //调用委托执行对应的增加或修改方法

            adet(topic);

            this.Close();

        }

 

        private void TopicForm_Load(object sender, EventArgs e)

        {

            if (topic != null)

            {

                //numTbx.Text = Convert.ToString(topic.Tid);

                nameTbx.Text = topic.Tname;

                tid = topic.Tid;

            }

        }

    }

本文地址:https://blog.csdn.net/yytrobot/article/details/107340826

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网