如何让TrackBar控件的Maximum是小数?
在下初学C#,现在用到了TrackBar,但发现它的Maximum和Minimum属性是int型,请问如何能让它们支持double型数据?也只是TrackBar控件的最大最小值可以是小数?
我想用继承的方法,写了如下两种代码:
一、
public class BACStrackBar:TrackBar
{
new public double Maximum;
new public double Minimum;
}
二、
public class BACStrackBar:TrackBar
{
public double maximum=new double();
public double minimum=new double();
new public double Maximum
{
get{return maximum;}
set{maximum=value;}
}
new public double Minimum
{
get{return minimum;}
set{minimum=value;}
}
}
这种代码虽然运行时不报错,也可以给Maximum和Minimum赋值,但最后的TrackBar最大最小值是系统默认的10和0,请问我应该如何写?
谢谢了!
问题点数:100、回复次数:12Top
1 楼copico(北北)回复于 2006-06-01 23:38:59 得分 10
把设置的最大最小值放在构造函数里
Top
2 楼lnhndx(凉风)回复于 2006-06-01 23:46:27 得分 10
此处改呢?
public class BACStrackBar:TrackBar
{
public double maximum= double.MaxValue;
public double minimum= double.MinValue;
...Top
3 楼Knight94(愚翁)回复于 2006-06-02 08:06:19 得分 30
其实你的思路稍微转换一下就行了,TrackBar只支持整型数字,那么你需要支持double,可以如下转换:
如果原有单位刻度是1,现在需要支持到0.1,那么不要控制单位刻度,而是同时放大最小值以及最大值到10倍,即反向扩大。Top
4 楼lalac(水月流影)回复于 2006-06-02 08:32:48 得分 20
这样就可以修改Default的值了:
public class BACStrackBar:TrackBar
{
private static const double max = 10.0f;
private static const double min = 0.0f;
public double maximum = max;
public double minimum = min;
[System.ComponentModel.DefaultValue(max)]
new public double Maximum
{
get{return maximum;}
set{maximum=value;}
}
[System.ComponentModel.DefaultValue(min)]
new public double Minimum
{
get{return minimum;}
set{minimum=value;}
}
}Top
5 楼hxn8203(hxn8203)回复于 2006-06-02 08:51:39 得分 0
lalac(水月流影) 说的我不太明白...Top
6 楼JasonHeung(拥有一切不过就这样笑着哭)回复于 2006-06-02 08:59:20 得分 30
public class BACStrackBar:TrackBar
{
private static const double max = 10.0f;
private static const double min = 0.0f;
[System.ComponentModel.DefaultValue(max)]
public double MyMaximum
{
get{return Maximum / 10.0;}
set{Maximum = value * 10.0;}
}
[System.ComponentModel.DefaultValue(min)]
public double MyMinimum
{
get{return Minimum / 10.0;}
set{Minimum=value * 10.0;}
}
public double MyValue
{
get{return Value/ 10.0;}
set{Value=value * 10.0;}
}
}
Top
7 楼hxn8203(hxn8203)回复于 2006-06-02 09:11:19 得分 0
谢谢大家!
我又试了试,通过我或lalac(水月流影) 的代码,可以设置TrackBar的Maximum和Minimum属性,也可以读出,但运行时TrackBar的最大最小值是默认的10和0。也就是说,Maximum和Minimum两个属性与TrackBar的最大最小值不一致了。
按copico(一路向北) 说的,写在构造函数里,
public class BACStrackBar:TrackBar
{
new public double Maximum = 67.8;
new public double Minimum = 56.9;
public BACStrackBar()
{
this.Maximum = 67.8;
this.Minimum = 56.9;
}
}
不知写的对不对。
TrackBar的最大最小值还是10,0,而且引用Maximum 和Minimum 时会报
无法将“BacsCfg.BACStrackBar.Maximum”作为 ref 或 out 传递,因为“BacsCfg.BACStrackBar.Maximum”是一个引用封送类
还有更好的方法吗?还是TrackBar本身就不支持小数?那样的话就只能按Knight94(愚翁) 说的做了。。
Top
8 楼huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)回复于 2006-06-02 09:22:52 得分 0
saveTop
9 楼hxn8203(hxn8203)回复于 2006-06-02 09:27:04 得分 0
小问一句
[System.ComponentModel.DefaultValue(max)]
这句话是什么意思啊?Top
10 楼Knight94(愚翁)回复于 2006-06-02 09:28:04 得分 0
参看这个例子:
http://www.codeproject.com/cs/miscctrl/TimeSlider.aspTop
11 楼hxn8203(hxn8203)回复于 2006-06-02 12:20:43 得分 0
谢谢各位,明白!Top
12 楼lalac(水月流影)回复于 2006-06-02 13:38:32 得分 0
[System.ComponentModel.DefaultValue(max)]
是告诉IDE,这个属性的默认值是什么,PropertyGrid和IDE的现实都和它有关。还有IDE生成代码也和它有关Top




