Проблема с appendText в c # - PullRequest
       20

Проблема с appendText в c #

0 голосов
/ 03 августа 2011

У меня есть приложение, которое имеет 3 текстовых поля (имя пользователя, из какой они компании и кого они посещают). Кнопка для печати и клавиатура на экране (монитор с сенсорным экраном).У меня все работает и работает ...

НО, единственное, что не работает, это когда пользователь указывает на предыдущий символ в текстовом поле, которое уже было набрано, на кнопки "AppendText" (клавиатура) не начинайте печатать там, где указал пользователь, но он продолжает печатать в конце того, что было набрано.

Это из-за "AppendText" или какой-то другой проблемы, которая возникла в моем коде?1006 * Я также пытаюсь получить первое текстовое поле (Name_Box), которое будет отправлено, чтобы сформировать одно, которое затем будет разбито на две метки (1, имя | 2, фамилия), прямо сейчас у меня оно отправлено одномуно я хочу разделить его так, чтобы его имя располагалось над вторым именем в следующей форме (которая распечатывается).

Большое вам спасибо.

Вот мой код:Первая форма

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    using System.Drawing.Printing;
    using System.IO;

    namespace SMART
    {
    public partial class Form1 : Form
    {

    private TextBox tbSelected; // Last focused TextBox
    private int posCaret;       // Caret position
    private int selLength;      // Selection length

    public Form1()
    {
        InitializeComponent();


        // We will use leave event for textboxes

        Name_Box.Leave += new System.EventHandler(textBox_Leave);
        Company_Box.Leave += new System.EventHandler(textBox_Leave);
        Visiting_Box.Leave += new System.EventHandler(textBox_Leave);
        // Set initial selection to the first textbox
        Name_Box.Select();
        tbSelected = Name_Box;
        posCaret = 0;
        selLength = 0;


    }

    // Leave event handler
    private void textBox_Leave(object sender, EventArgs e)
    {
        // Remember the last focused thextbox,
        // the caret position in it and the selection length
        tbSelected = (TextBox)sender;

        posCaret = tbSelected.SelectionStart;
        selLength = tbSelected.SelectionLength;

    }

    // Helper method to restore selection
    private void RestoreLastSelection()
    {
        tbSelected.Select();
        posCaret = tbSelected.SelectionStart;
        selLength = tbSelected.SelectionLength;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        label5.Text = DateTime.Now.ToString();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        label5.Text = DateTime.Now.ToString();

        Form2 frm = new Form2(Name_Box.Text);
        frm.Show();
        frm.Close();

        StreamWriter sw;
        sw = File.AppendText ("C:\\SignIn.txt");
        sw.WriteLine ("Date and Time: " + label5.Text + " | Name: " + Name_Box.Text + "  | Company: " + Company_Box.Text + " | Visiting: " + Visiting_Box.Text + " |");
        sw.Close ();

        Name_Box.Clear();
        Company_Box.Clear();
        Visiting_Box.Clear();
    }

    private void button42_Click(object sender, EventArgs e)
    {
        //SPACE BAR

        tbSelected.AppendText(" ");

    }

    private void button24_Click(object sender, EventArgs e)
    {
        //DELETE
        string t = tbSelected.Text;
        if (t.Length > 0)
        {
            tbSelected.Text = t.Remove(t.Length - 1);
        } 
    }

    private void button12_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("-");
    }

    private void button13_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("Q");
    }

    private void button14_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("W");
    }

    private void button15_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("E");
    }

    private void button16_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("R");
    }

    private void button17_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("T");
    }

    private void button18_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("Y");
    }

    private void button19_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("U");
    }

    private void button20_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("I");
    }

    private void button21_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("O");
    }

    private void button22_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("P");
    }

    private void button25_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("A");
    }

    private void button26_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("S");
    }

    private void button27_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("D");
    }

    private void button28_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("F");
    }

    private void button29_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("G");
    }

    private void button30_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("H");
    }

    private void button31_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("J");
    }

    private void button32_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("K");
    }

    private void button33_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("L");
    }

    private void button35_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("Z");
    }

    private void button36_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("X");
    }

    private void button37_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("C");
    }

    private void button38_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("V");
    }

    private void button39_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("B");
    }

    private void button40_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("N");
    }

    private void button41_Click(object sender, EventArgs e)
    {
        tbSelected.AppendText("M");
    }

    private void button2_Click_1(object sender, EventArgs e)
    {
        tbSelected.AppendText("'");
    }

    private void button3_Click(object sender, EventArgs e)
    {
        tbSelected.Clear();
    }
    }
     }

Вот мой код: Вторая форма

     using System;
     using System.Collections.Generic;
     using System.ComponentModel;
     using System.Data;
     using System.Drawing;
     using System.Linq;
     using System.Text;
     using System.Windows.Forms;
     using System.Drawing.Printing;




    namespace SMART
    {
        public partial class Form2 : Form
        {
            public Form2(string strTextBox)
            {
                InitializeComponent();
                label3.Text = strTextBox;   
            }

            private void Form2_Load(object sender, EventArgs e)
            {
                label1.Text = DateTime.Now.ToString();

                PrintDocument pd = new PrintDocument();
                Margins margins = new Margins(0, 0, 0, 0);
                pd.DefaultPageSettings.Margins = margins;
                pd.PrintPage += new PrintPageEventHandler(PrintImage);
                pd.Print();

                /*
                //My sad attempt at splitting the Name


                var fullname = strTextBox;
                var names = fullname.Split (" ");
                label3.Text = names[0];
                label5.Text = names[1];
        */
            }

            void PrintImage(object o, PrintPageEventArgs e)
            {
                int x = SystemInformation.WorkingArea.X;
                int y = SystemInformation.WorkingArea.Y;
                int width = this.Width;
                int height = this.Height;

                Rectangle bounds = new Rectangle(x, y, width, height);
                Bitmap img = new Bitmap(width, height);
                this.DrawToBitmap(img, bounds);
                Point p = new Point(0, 0);
                e.Graphics.DrawImage(img, p);
            }

        }
    }

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Вы правы в том, что ваша проблема заключается в использовании AppendText, который всегда добавляет к концу (вот что означает добавление).

Вам необходимо вставить символ в текущей позиции в каратах.

Возможно, лучше написать сообщение, имитирующее нажатие клавиши на физической клавиатуре.

0 голосов
/ 03 августа 2011

Если вы хотите вставить текст в текущей позиции пользователя, вы можете использовать SelectedText . Это заменит текущий выбор (если пользователь выбрал символы):

tbSelected.SelectedText = "V";

Редактировать: проблема здесь:

private void button24_Click(object sender, EventArgs e)
{
    //DELETE
    string t = tbSelected.Text;
    if (t.Length > 0)
    {
        tbSelected.Text = t.Remove(t.Length - 1);
    } 
}

Вы устанавливаете текст, который возвращает курсор в начало текстового поля. Вы должны установить tbSelected.SelectionStart после очистки текста.

...