CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

如何让TrackBar控件的Maximum是小数?

楼主hxn8203(hxn8203)2006-06-01 23:33:07 在 .NET技术 / C# 提问

在下初学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

相关问题

关键词

得分解答快速导航

  • 帖主:hxn8203
  • copico
  • lnhndx
  • Knight94
  • lalac
  • JasonHeung

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo