getstr88 发表于 2022-6-15 10:58

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

本帖最后由 getstr88 于 2022-6-15 11:25 编辑


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


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

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




或者,这个要自己写,也简单写了个,能大致实现,就是手感比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

zhuxianling 发表于 2022-6-15 11:01
正在研究这里,感谢分享

??? 啥意思,我分享啥了

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 加个自定义属性吗?给你举个栗子:

private int changeSize = 1;


public int ChangeSize
{
    get { return changeSize; }
    set { changeSize = value; }
}

试试行不行?

getstr88 发表于 2022-6-15 23:56

TanXin 发表于 2022-6-15 16:33
只是想给 UserControl 加个自定义属性吗?给你举个栗子:

private int change ...

感谢兄弟。再追问下。

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

于是我只能这么定义:

public partial class UserControl1 : UserControl
    {
      
      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 编辑

继续求助下新遇到的这个问题
页: [1] 2
查看完整版本: C# WinForm好像没有自带 类似Photoshop,在文字标签上,鼠标按住并左右移动能调数值