吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1043|回复: 10
收起左侧

[求助] C# WinForm好像没有自带 类似Photoshop,在文字标签上,鼠标按住并左右移动能调数值

[复制链接]
getstr88 发表于 2022-6-15 10:58
本帖最后由 getstr88 于 2022-6-15 11:25 编辑

1111111.png
如上图所示,我红箭头指的有点歪了。不是32那个文本框。而是photoshop做的很人性化的一点,鼠标放在容差2个字上,按住,然后向左拖动可以减少,向右拖动可以增大,手感非常舒服,人机交互体验感很棒


但我发现winform自带的2个类似的组件都不够人性化,所以问下,是不是有和ps一样的组件,只是我刚接触winform不知道

如果真的没有,再问下,有用过其他程序员开源的类似这个的组件么?求nuget地址

3333.png


或者,这个要自己写,也简单写了个,能大致实现,就是手感比ps还是查很多(如果我把它封装为UserControl,我想问下,我怎么做成那样想wiinform内置控件,能在属性中修改一些数据啊?  我想把鼠标移动1像素对应变化多少值,作为一个属性供设置)

bool isDown = false;
        int originalPointX;
        int originalValue;

        private void label3_MouseDown(object sender, MouseEventArgs e)
        {
            isDown = true;
            originalPointX = e.X;
            originalValue = int.Parse(textBox1.Text);
        }

        private void label3_MouseUp(object sender, MouseEventArgs e)
        {
            isDown = false;
        }

        private void label3_MouseMove(object sender, MouseEventArgs e)
        {
            if (isDown == false)
                return;

            int changeSize = e.X - originalPointX;
            int currentValue = originalValue + changeSize;
            textBox1.Text = currentValue.ToString();
        }

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zhuxianling 发表于 2022-6-15 11:01
正在研究这里,感谢分享
 楼主| getstr88 发表于 2022-6-15 11:02
pzx521521 发表于 2022-6-15 11:13
有  在edit控件上  
监听 mouse state(是否按下左键)  mouse move(鼠标移动) 事件即可
同理可以监听滚轮  实现 滚轮调节  

搞完后自己封装一个类完成复用
 楼主| getstr88 发表于 2022-6-15 11:19
pzx521521 发表于 2022-6-15 11:13
有  在edit控件上  
监听 mouse state(是否按下左键)  mouse move(鼠标移动) 事件即可
同理可以监听滚轮  ...

如果我把它封装为UserControl,我想问下,我怎么做成那样想wiinform内置控件,能在属性中修改一些数据啊?  我想把鼠标移动1像素对应变化多少值,作为一个属性供设置
pzx521521 发表于 2022-6-15 11:22
getstr88 发表于 2022-6-15 11:19
如果我把它封装为UserControl,我想问下,我怎么做成那样想wiinform内置控件,能在属性中修改一些数据啊 ...

度娘  "UserControl 自定义属性"
 楼主| getstr88 发表于 2022-6-15 11:24
pzx521521 发表于 2022-6-15 11:22
度娘  "UserControl 自定义属性"

我做过这个控件,但是当时也没找到怎么自己做属性。

网上对于它的文章,写的都很简单,就介绍怎么做一个这样的皮毛文章
TanXin 发表于 2022-6-15 16:33
只是想给 UserControl 加个自定义属性吗?给你举个栗子:

[C#] 纯文本查看 复制代码
private int changeSize = 1;

[Category("自定义"), Description("鼠标移动1像素对应变化"), Browsable(true)]
public int ChangeSize
{
    get { return changeSize; }
    set { changeSize = value; }
}


试试行不行?
 楼主| getstr88 发表于 2022-6-15 23:56
TanXin 发表于 2022-6-15 16:33
只是想给 UserControl 加个自定义属性吗?给你举个栗子:

[mw_shl_code=csharp,true]private int change ...

感谢兄弟。再追问下。

就比如,我的userControl是由一个label和textbox组成。我给userControl定义一个属性叫labelName,并想实现,通过修改这个属性,就改变下属的label的文字

于是我只能这么定义:

public partial class UserControl1 : UserControl
    {
        [Category("自定义控件功能"), Description("描述:设置label文字"), Browsable(true)]
        public string LabelName
        {
            get { return labelName; }
            set
            {
                labelName = value;
                this.myLabel.Text = value;
            }
        }

        private string labelName;

        public UserControl1()
        {
            InitializeComponent();
        }
    }


但我的问题是,因为get、set不是用默认的get;set;,而是自己写的get、set方法,C#语法就不允许使用默认值了。但我又想让属性窗口中,它有我指定的默认值为“请输入文本”

这可怎么办?
 楼主| getstr88 发表于 2022-6-16 00:02
本帖最后由 getstr88 于 2022-6-16 00:14 编辑

继续求助下新遇到的这个问题
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表