在wpf中创建Backspace键行为的问题

时间:2012-07-08 13:08:50

标签: c# wpf

public partial class Backspace : Window
{
    Control TextBoxDetails;
    TextBox BehaveTextbox;
    public Backspace()
    {
        this.InitializeComponent();

        // Insert code required on object creation below this point.
    }

    private void btn_t_Click(object sender, RoutedEventArgs e)
    {
        BehaveTextbox = TextBoxDetails as TextBox;
        if (TextBoxDetails != null)
        {
            var _CareIndex = BehaveTextbox.CaretIndex;
            BehaveTextbox.Text = BehaveTextbox.Text.Insert(_CareIndex, "      ");
            BehaveTextbox.Focus();
            BehaveTextbox.CaretIndex = _CareIndex + 6;
        }
    }

    private void btn_s_Click(object sender, RoutedEventArgs e)
    {
        BehaveTextbox = TextBoxDetails as TextBox;
        if (TextBoxDetails != null)
        {
            var _CareIndex = BehaveTextbox.CaretIndex;
            BehaveTextbox.Text = BehaveTextbox.Text.Insert(_CareIndex, " ");
            BehaveTextbox.Focus();
            BehaveTextbox.CaretIndex = _CareIndex + 1;
        }
    }

    private void btn_bs_Click(object sender, RoutedEventArgs e)
    {
        BehaveTextbox = TextBoxDetails as TextBox;

        if (TextBoxDetails != null)
        {

            string _CurrentValue = BehaveTextbox.Text;
            var _CareIndex = BehaveTextbox.CaretIndex;

            if (_CareIndex > 0)
            {
                string _Backspace = _CurrentValue.Remove(_CareIndex - 1, 1);
                BehaveTextbox.Text = _Backspace;
                BehaveTextbox.Focus();
                BehaveTextbox.CaretIndex = _CareIndex - 1;
            }
        }
    }

    private void txt_result_GotFocus(object sender, RoutedEventArgs e)
    {
        TextBoxDetails = (Control)sender;
    }
}

Design

在上图中文本框有一些文本值。我在 111 222 之间放置3个空格,点击SPACE按钮(btn_s)3次,然后在<单击TAB按钮(btn_t)两次,强> 222 和 333

当我单击Backspace按钮(btn_bs)时,每次只清除一个空格或字母。但我想要做的是,当单击Backspace按钮(btn_bs)时,如果在文本框中有选项卡,那应该删除。如果文本框中有间隔,则会删除。

1 个答案:

答案 0 :(得分:1)

试试这个:

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        Control TextBoxDetails;
        TextBox BehaveTextbox;

        private void btn_t_Click(object sender, RoutedEventArgs e)
        {
            BehaveTextbox = TextBoxDetails as TextBox;
            if (TextBoxDetails != null)
            {
                var _CareIndex = BehaveTextbox.CaretIndex;
                BehaveTextbox.Text = BehaveTextbox.Text.Insert(_CareIndex, "\t");
                BehaveTextbox.Focus();
                BehaveTextbox.CaretIndex = _CareIndex + 1;
            }
        }

        private void btn_s_Click(object sender, RoutedEventArgs e)
        {
            BehaveTextbox = TextBoxDetails as TextBox;
            if (TextBoxDetails != null)
            {
                var _CareIndex = BehaveTextbox.CaretIndex;
                BehaveTextbox.Text = BehaveTextbox.Text.Insert(_CareIndex, " ");
                BehaveTextbox.Focus();
                BehaveTextbox.CaretIndex = _CareIndex + 1;
            }
        }

        private void btn_bs_Click(object sender, RoutedEventArgs e)
        {
            BehaveTextbox = TextBoxDetails as TextBox;

            if (TextBoxDetails != null)
            {

                string _CurrentValue = BehaveTextbox.Text;
                var _CareIndex = BehaveTextbox.CaretIndex;

                if (_CareIndex > 0)
                {
                    string _Backspace = _CurrentValue.Remove(_CareIndex - 1, 1);
                    BehaveTextbox.Text = _Backspace;
                    BehaveTextbox.Focus();
                    BehaveTextbox.CaretIndex = _CareIndex - 1;
                }
            }
        }

        private void txt_result_GotFocus(object sender, RoutedEventArgs e)
        {
            TextBoxDetails = (Control)sender;
        }
    }