C#开发心得——关于get与set方法、动态添加自定义控件、鼠标拖动控件移动

关于get与set方法

  1. 即使使用get、set获得属性的方法,如果不将类中的字段序列化,外界依旧不能获得该字段的值。
    如:
//设置类对象
 public HTuple modelID
 { get; set; }

//modelID变量若想得到类中的字段值,只能先将类中的字段序列化,再反序列化,方可得到该值
 modelID = templateMatch.modelID;

//序列化和反序列化可直接得到字段的值,可以通过不增加get和set方法获得字段的值,即:
//设置类对象
 public HTuple modelID

//1.先序列化
templateMatch.modelID = modelID;
//2.再反序列化
 modelID = templateMatch.modelID;

动态添加自定义控件

https://blog.csdn.net/m0_43398336/article/details/102789775?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3-102789775-blog-120318546.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3-102789775-blog-120318546.pc_relevant_default&utm_relevant_index=6

 public List<Button> _button = new List<Button>();

        private void button2_Click(object sender, EventArgs e)
        {
            Button button = new Button();
            _button.Add(button);
            button.Text = "按钮控件"+ _button.Count;
            refreshwindow();
        }
        private void refreshwindow()
        {
            System.Drawing.Point point = new System.Drawing.Point();
            panel1.Controls.Clear();
            for (int i = 0; i < _button.Count; i++)
            {
                point.Y = _button[i].Height * i;
                _button[i].Location = point;
                panel1.Controls.Add(_button[i]);
            }
        }

鼠标拖动控件移动

 #region COMMON_MOUSE_EVENT
        private System.Drawing.Point mouse_offset;
        private System.Drawing.Point original_pos;
        private void Common_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                System.Drawing.Point mousePos = Control.MousePosition;
                mousePos.Offset(mouse_offset.X, mouse_offset.Y);
                //检查是否超出背景图片边界,超出则位置不变;在图片范围内,则控件位置改变。
                if (((Control)sender).Parent.PointToClient(mousePos).X >= 0 && (((Control)sender).Parent.PointToClient(mousePos).X <= ((Control)sender).Parent.Size.Width)
                    && (((Control)sender).Parent.PointToClient(mousePos).Y >= 0 && ((Control)sender).Parent.PointToClient(mousePos).Y <= ((Control)sender).Parent.Size.Height))
                {
                    ((Control)sender).Location = ((Control)sender).Parent.PointToClient(mousePos);
                    //MessageBox.Show(((Control)sender).Location.ToString());
                }
                else
                {
                    ((Control)sender).Location = original_pos;
                }
            }
        }
        private void Common_MouseDown(object sender, MouseEventArgs e)
        {
            mouse_offset = new System.Drawing.Point(-e.X, -e.Y);
            original_pos = ((Control)sender).Location;
        }

        private void Common_MouseMove(object sender, MouseEventArgs e)
        {
            ((Control)sender).Cursor = Cursors.Arrow;
            if (e.Button == MouseButtons.Left)
            {
                System.Drawing.Point mousePos = Control.MousePosition;
                mousePos.Offset(mouse_offset.X, mouse_offset.Y);
                ((Control)sender).Location = ((Control)sender).Parent.PointToClient(mousePos);
            }
        }
        #endregion


 		private void Form1_Load(object sender, EventArgs e)
        {
            button2.MouseMove += new System.Windows.Forms.MouseEventHandler(Common_MouseMove);
            button2.MouseDown += new System.Windows.Forms.MouseEventHandler(Common_MouseDown);
            button2.MouseUp += new System.Windows.Forms.MouseEventHandler(Common_MouseUp);


        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值