这是窗体界面图下面是删除按钮里面的代码       private void del_fm_Click(object sender, EventArgs e)
        {
            int id = Convert.ToInt32(((Button)sender).Tag);
            bool num = new BLL_NetworManagement.BLL_FMmodulator().Delete(id);
            if (num)
            {
                this.Invalidate();
                //this.Refresh();
                MessageBox.Show("删除成功");
            }
            else
            {
                MessageBox.Show("删除失败");
            }
        }C#重新加载窗体

解决方案 »

  1.   

        MessageBox.Show("删除成功");后面添加你要重新在窗体上加载的数据,然后显示出来。
      

  2.   

    你提取加载数据代码到一个方法中,比如LoadData();窗体加载时调用它一次你删除的时候重新调用这个方法不就可以了么?
      

  3.   

    动态绑定的数据重新绑定就可以,this.Refresh是触发Paint事件进行重绘,不是必需的
      

  4.   


    我把加载数据代码写在 Info方法中,在窗体加载的时候调用,点击删除按钮后也调用,调试窗体有重新加载过,但窗体的界面还是没变,这是为什么?
     #region 删除
            private void del_CC_Click(object sender, EventArgs e)
            {
                int id = Convert.ToInt32(((Button)sender).Tag);
                bool num = new BLL_NetworManagement.BLL_CodingController().Delete(id);
                if (num)
                {
                    Info();
                    //MessageBox.Show("删除成功");
                    ////this.Maintenance_Load(sender, e);
                    //this.Invalidate();
                }
                else
                {
                    MessageBox.Show("删除失败");
                }
            }
      

  5.   


     public void Info()
            {
                BLL_NetworManagement.BLL_CodingController _control = new BLL_NetworManagement.BLL_CodingController();
                list_Control = _control.GetControlList();            #region 编码控制器设备            groupbox = new GroupBox();
                groupbox.Text = "编码控制器";
                groupbox.Location = new Point(20, 20);
                groupbox.Size = new Size(530, 186);
                groupbox.BackColor = Color.Transparent;
                this.Controls.Add(groupbox);            count = list_Control.Count;
                gc = groupbox.CreateGraphics();
                groupbox.Paint += RenderRectangle;            for (int i = 0; i < list_Control.Count; i++)
                {
                    CodingController controller = new CodingController();
                    controller = (CodingController)list_Control[i];                System.DateTime curr_time = System.DateTime.Now;
                    string tt = curr_time.ToString();
                    Label label = new Label();
                    label.Text = tt;
                    label.Location = new Point(30 + 170 * i, 60);
                    label.Size = new Size(160, 20);
                    label.BackColor = Color.Transparent;
                    this.Controls.Add(label);
                    label.BringToFront();                Label label_a = new Label();
                    if (controller.CC_WorkState == 0)
                    {
                        label_a.Text = "系统待机    ⊙";
                    }
                    else
                    {
                        label_a.Text = "日常广播    ⊙";
                    }
                    label_a.Location = new Point(50 + 166 * i, 90);
                    label_a.Size = new Size(140, 20);
                    label_a.BackColor = Color.Transparent;
                    this.Controls.Add(label_a);
                    label_a.BringToFront();                Button btn = new Button();
                    btn.Text = "查看";
                    btn.Tag = controller.CC_ID;
                    btn.Location = new Point(30 + 170 * i, 126);
                    btn.Size = new Size(48, 22);
                    btn.Click += showEquipment_CC_Click;
                    btn.BackColor = Color.Transparent;
                    this.Controls.Add(btn);
                    btn.BringToFront();                if (Public.loginInfo.USER_FLAG == 1)
                    {
                        Button btn_del = new Button();
                        btn_del.Text = "删除";
                        btn_del.Tag = controller.CC_ID;
                        btn_del.Location = new Point(90 + 170 * i, 126);
                        btn_del.Size = new Size(48, 22);
                        btn_del.Click += del_CC_Click;
                        btn_del.BackColor = Color.Transparent;
                        this.Controls.Add(btn_del);
                        btn_del.BringToFront();
                    }
                }
                #endregion}
      

  6.   


    我调用窗体界面还是没变化,调试发现的确是运行了,窗体上的数据却纹丝不动。这是为什么?  list_Control = _control.GetControlList();
    是这句么  获取后台数据的。
      

  7.   


    我调用窗体界面还是没变化,调试发现的确是运行了,窗体上的数据却纹丝不动。这是为什么?  list_Control = _control.GetControlList();
    是这句么  获取后台数据的。是的。
      

  8.   


    我调用窗体界面还是没变化,调试发现的确是运行了,窗体上的数据却纹丝不动。这是为什么?  list_Control = _control.GetControlList();
    是这句么  获取后台数据的。是的。
    那就再get一次  然后绑定数据源 就可以了呀。
      

  9.   

    我的删除按钮事件里面有调用Info(),应该达到你说的那些,但窗体界面没变化。
      

  10.   

    看你的INFO里面的代码,貌似所有控件都是动态生成的;
    应该是先生成新的,后删除旧的,再显示成功。
    因为你先delete了,事件都不存在了。
      

  11.   


    您好! Info实现我发上去了,你帮我支支高招。  (就想点删除按钮,删除一条数据后,窗体上会减少一条数据)
      

  12.   

    把Groupbox里面的项(如你图中2个按钮和相关标签等)封装成一个用户控件,不要用手写代码把控件一个个添加上去,当你想删除的时候再相应Remove掉对应的控件即可.
      

  13.   


    我一个for循环生成3个用户控件,但它们创建的时候所用对象都一样,我用ReMove方法会把它们都删除了,
      

  14.   

    很粗糙地写了一个和类似你需求的小程序,你先看看吧,合适就参考下,不合适就算。
    主要用到了FlowLayoutPanel控件和用户控件。前者用于动态布局容器内控件的排放,不用你写代码控制容器内控件的位置;后者是用户自定义控件,把容器内的项视为一个个小整体,而不是你现在手动把需要的控件一个个添加上去。
    用户控件using System;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Drawing;namespace Test
    {
        public partial class Controller : UserControl
        {
            private Label lblTime;
            private Label lblSysStatus;
            private RadioButton rbtnSysStatus;
            private Button btnLookup;
            private Button btnDelete;        public event EventHandler Lookup;
            public event EventHandler Delete;        public string SysTime
            {
                get { return lblTime.Text; }
                set { lblTime.Text = value; }
            }
            public string SysStatusMsg
            {
                get { return lblSysStatus.Text; }
                set { lblSysStatus.Text = value; }
            }
            public bool SysStatus
            {
                get { return rbtnSysStatus.Checked; }
                set { rbtnSysStatus.Checked = value; }
            }        public Controller()
            {
                InitializeComponent();            SetupControl();
            }        //可以直接在IDE布局这些控件,这里用于讲解
            private void SetupControl()
            {
                this.SuspendLayout();
                lblTime = new Label();
                lblTime.Name = "lblTime";
                lblTime.Location = new Point(10, 20);            lblSysStatus = new Label();
                lblSysStatus.Name = "lblSysStatus";
                lblSysStatus.Location = new Point(10, 50);            rbtnSysStatus = new RadioButton();
                rbtnSysStatus.Name = "rbtnSysStatus";
                rbtnSysStatus.Text = "";
                rbtnSysStatus.Location = new Point(80, 45);            btnLookup = new Button();
                btnLookup.Name = "btnLookup";
                btnLookup.Text = "查看";
                btnLookup.Width = 50;
                btnLookup.Location = new Point(10, 90);
                btnLookup.Click += new EventHandler(btnLookup_Click);            btnDelete = new Button();
                btnDelete.Name = "btnDelete";
                btnDelete.Text = "删除";
                btnDelete.Width = 50;
                btnDelete.Location = new Point(70, 90);
                btnDelete.Click += new EventHandler(btnDelete_Click);            this.Controls.Add(lblTime);
                this.Controls.Add(rbtnSysStatus);
                this.Controls.Add(lblSysStatus);
                this.Controls.Add(btnLookup);
                this.Controls.Add(btnDelete);            this.BorderStyle = BorderStyle.FixedSingle;
                this.BackColor = Color.LightSkyBlue;            this.ResumeLayout();
            }        private void btnLookup_Click(object sender, EventArgs e)
            {
                OnLookup(e);
            }        private void btnDelete_Click(object sender, EventArgs e)
            {
                OnDelete(e);
            }        private void OnDelete(EventArgs e)
            {
                EventHandler temp = Delete;
                if (temp != null)
                    temp(this,e);
            }        private void OnLookup(EventArgs e)
            {
                EventHandler temp = Lookup;
                if (temp != null)
                    temp(this, e);
            }
        }
    }
    界面using System;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Windows.Forms;namespace Test
    {
        public partial class Form1 : Form
        {
            FlowLayoutPanel controllers;        public Form1()
            {
                InitializeComponent();            SetupControl();
            }        private void SetupControl()
            {
                controllers = new FlowLayoutPanel();
                controllers.AutoScroll = true;
                controllers.Dock = DockStyle.Fill;
                controllers.BackColor = Color.LightSkyBlue;
                groupBox1.Controls.Add(controllers);            LoadControllers();
            }        //可以从数据库读取数据进行绑定
            private void LoadControllers()
            {
                for (int i = 0; i < 15; i++)
                {
                    Controller ctler = new Controller();
                    ctler.Name = i.ToString();
                    ctler.SysTime = DateTime.Now.ToString();
                    ctler.SysStatusMsg = "系统待机";
                    ctler.SysStatus = i % 2 == 0 ? true : false;
                    ctler.Lookup += new EventHandler(ctler_Lookup);
                    ctler.Delete += new EventHandler(ctler_Delete);                controllers.Controls.Add(ctler);
                }
            }        //删除,从容器移除它
            private void ctler_Delete(object sender, EventArgs e)
            {
                Controller ctler = sender as Controller;
                if (ctler != null)
                {
                    if (controllers.Controls.Contains(ctler))
                        controllers.Controls.Remove(ctler);
                }
            }
            //可以处理查看功能
            private void ctler_Lookup(object sender, EventArgs e)
            {
                MessageBox.Show((sender as Controller).Name);
            }
        }
    }