System.Windows.Forms.NumericUpDown控件,如何获得选中的文本的起始位置和结束位置? this.numericUpDown1.Value根据这个不是可以判断?步长是多少就加或减你不就知道它的起始位置了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我已经解决了using System;//using System.ComponentModel;using System.Windows.Forms;namespace ClassLibrary1{ /// <summary> /// Class1 的摘要说明。 /// </summary> //设计一个上下改造数字自动调整的控件,根据在哪一位,调整该位的数字 public class TTextBoxEx:System.Windows.Forms.NumericUpDown { private bool FIsBitAdjust; //数字编辑框 public TextBox EditControl { get { return ((TextBox)(this.Controls[1])); } } //按光标位置调整数字 public bool IsBitAdjust { get { return FIsBitAdjust; } set { FIsBitAdjust=value; } } private void AdjustNum(bool IsAdd) { int li_bit,li_bit1,li_len,li_PointBit; if(ReadOnly) return; li_bit1=EditControl.SelectionStart; li_len=Text.Length; if(CanFocus) Focus(); if(EditControl.SelectionLength>0) { li_bit=li_bit1; EditControl.SelectionLength=1; } else { li_bit=li_bit1; if(li_bit==li_len) li_bit--; EditControl.SelectionStart=li_bit; li_bit1=li_bit; EditControl.SelectionLength=1; } li_PointBit=Text.IndexOf('.'); if(li_PointBit==-1) li_PointBit=li_len; if(li_PointBit<li_bit) li_bit=li_PointBit-li_bit; else if(li_PointBit>li_bit) li_bit=li_PointBit-li_bit-1; else return; if(IsAdd) { Value=Value+System.Decimal.Parse((System.Math.Pow(10,li_bit).ToString())); if(Value>this.Maximum) Value=this.Minimum; } else { Value=Value-System.Decimal.Parse((System.Math.Pow(10,li_bit).ToString())); if(Value<this.Minimum) Value=this.Maximum; } if(li_len<Text.Length) EditControl.SelectionStart=li_bit1+1; else if(li_len>Text.Length) EditControl.SelectionStart=li_bit1-1; else EditControl.SelectionStart=li_bit1; EditControl.SelectionLength=1; Refresh(); } //重载上调及下调 public override void DownButton() { if(FIsBitAdjust) { AdjustNum(false); } else { //继承 base.DownButton(); } } //重载上调及下调 public override void UpButton() { if(FIsBitAdjust) { AdjustNum(true); } else { //继承 base.DownButton(); } } }} C#如何改变comboBox的高度? 新手求教超简单问题2,但是我不懂! winform中取值问题 模板列中放单选按钮 关于datagrid. 救命啊...一个关于ftp的奇怪现象,烦请高手不吝赐教 ---在线等 C#如何实现另存为 C#开发SIP客户端,发送消息后,返回400错误,CallID空了 winforms 高分,关于新闻组的问题! 我很迷惘,该巩固VC的学习,还是改学.net?? 郵件權限問題
using System;
//using System.ComponentModel;
using System.Windows.Forms;
namespace ClassLibrary1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
//设计一个上下改造数字自动调整的控件,根据在哪一位,调整该位的数字
public class TTextBoxEx:System.Windows.Forms.NumericUpDown
{
private bool FIsBitAdjust;
//数字编辑框
public TextBox EditControl
{
get
{
return ((TextBox)(this.Controls[1]));
}
}
//按光标位置调整数字
public bool IsBitAdjust
{
get
{
return FIsBitAdjust;
}
set
{
FIsBitAdjust=value;
}
}
private void AdjustNum(bool IsAdd)
{
int li_bit,li_bit1,li_len,li_PointBit; if(ReadOnly) return; li_bit1=EditControl.SelectionStart;
li_len=Text.Length; if(CanFocus)
Focus();
if(EditControl.SelectionLength>0)
{
li_bit=li_bit1;
EditControl.SelectionLength=1;
}
else
{
li_bit=li_bit1;
if(li_bit==li_len) li_bit--; EditControl.SelectionStart=li_bit;
li_bit1=li_bit;
EditControl.SelectionLength=1;
}
li_PointBit=Text.IndexOf('.');
if(li_PointBit==-1) li_PointBit=li_len; if(li_PointBit<li_bit)
li_bit=li_PointBit-li_bit;
else if(li_PointBit>li_bit)
li_bit=li_PointBit-li_bit-1;
else
return;
if(IsAdd)
{
Value=Value+System.Decimal.Parse((System.Math.Pow(10,li_bit).ToString()));
if(Value>this.Maximum)
Value=this.Minimum;
}
else
{
Value=Value-System.Decimal.Parse((System.Math.Pow(10,li_bit).ToString()));
if(Value<this.Minimum)
Value=this.Maximum;
} if(li_len<Text.Length)
EditControl.SelectionStart=li_bit1+1;
else if(li_len>Text.Length)
EditControl.SelectionStart=li_bit1-1;
else
EditControl.SelectionStart=li_bit1;
EditControl.SelectionLength=1;
Refresh();
} //重载上调及下调
public override void DownButton()
{ if(FIsBitAdjust)
{
AdjustNum(false);
}
else
{
//继承
base.DownButton();
}
}
//重载上调及下调
public override void UpButton()
{
if(FIsBitAdjust)
{
AdjustNum(true);
}
else
{
//继承
base.DownButton();
}
}
}}