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
正在研究这里,感谢分享
??? 啥意思,我分享啥了 有在edit控件上
监听 mouse state(是否按下左键)mouse move(鼠标移动) 事件即可
同理可以监听滚轮实现 滚轮调节
搞完后自己封装一个类完成复用 pzx521521 发表于 2022-6-15 11:13
有在edit控件上
监听 mouse state(是否按下左键)mouse move(鼠标移动) 事件即可
同理可以监听滚轮...
如果我把它封装为UserControl,我想问下,我怎么做成那样想wiinform内置控件,能在属性中修改一些数据啊?我想把鼠标移动1像素对应变化多少值,作为一个属性供设置 getstr88 发表于 2022-6-15 11:19
如果我把它封装为UserControl,我想问下,我怎么做成那样想wiinform内置控件,能在属性中修改一些数据啊 ...
度娘"UserControl 自定义属性" pzx521521 发表于 2022-6-15 11:22
度娘"UserControl 自定义属性"
我做过这个控件,但是当时也没找到怎么自己做属性。
网上对于它的文章,写的都很简单,就介绍怎么做一个这样的皮毛文章 只是想给 UserControl 加个自定义属性吗?给你举个栗子:
private int changeSize = 1;
public int ChangeSize
{
get { return changeSize; }
set { changeSize = value; }
}
试试行不行? 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:14 编辑
继续求助下新遇到的这个问题
页:
[1]
2