FormOffsetPosition.cs

using System;
using System.Windows.Forms;

namespace DIYWordpad
{
    public partial class FormOffsetPosition : Form
    {
        #region 自定义对象
        private RichTextBox richText;
        private ToolTip toolTip;
        #endregion

        public FormOffsetPosition(RichTextBox rtb)
        {
            #region
            InitializeComponent();
            richText = rtb;
            maskedText.ValidatingType = typeof(int);
            maskedText.PromptChar = '0'; // 设置提示字符。
            maskedText.HidePromptOnLeave = false; // 无焦点时,输入掩码中的提示字符保持显示。
            maskedText.TextMaskFormat = MaskFormat.IncludePromptAndLiterals; // 返回用户输入的文本、掩码中定义的任意文本字符以及提示字符的任意实例。
            #endregion
        }

        #region FormLoad
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            bool flag = Convert.ToBoolean(this.Tag);
            labelLine.Visible = flag;
            rbDn.Visible = rbUp.Visible = !flag;
            if (flag)
            {
                int length = (richText.GetLineFromCharIndex(richText.TextLength) + 1).ToString().Length;
                maskedText.Mask = string.Format("{0:D" + length + "}", 0);
            }
            else
                rbUp.Checked = true;
        }
        #endregion

        #region MaskedTextBox.Mask
        private void radioButton_CheckedChanged(object sender, EventArgs e)
        {
            maskedText.Mask = sender.Equals(rbUp) ? "+00" : "-00";
            maskedText.Focus();
            maskedText.Select(1, 2);
        }

        private void maskedText_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
        {
            if (e.Position < maskedText.TextLength)
            {
                if (toolTip == null)
                {
                    toolTip = new ToolTip();
                    toolTip.IsBalloon = true; // 使用气球状窗口。
                    toolTip.ToolTipIcon = ToolTipIcon.Warning;
                    toolTip.ToolTipTitle = "写字板";
                }
                toolTip.Show("请输入 0~9 数字!", maskedText, 3000);
            }
        }
        #endregion

        #region OKButton
        private void btnOK_Click(object sender, EventArgs e)
        {
            int value = int.Parse(maskedText.Text);
            if (Convert.ToBoolean(this.Tag))
            {
                if (value < 1)
                    goto End;
                if ((value = richText.GetFirstCharIndexFromLine(value - 1)) > -1)
                {
                    richText.SelectionLength = 0;
                    richText.SelectionStart = value;
                    richText.ScrollToCaret(); // 将控件的内容滚动到当前插入符号位置。
                }
                else
                    MessageBox.Show(this, "指定的行号超出控件中的行数范围。", "写字板", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
                richText.SelectionCharOffset = value;
        End:
            {
                maskedText.Focus();
                maskedText.SelectAll();
            }
        }
        #endregion

        #region CancelButton
        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        #endregion
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值