Как назначить порядок табуляции слева направо - winforms C # - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть форма окна в проекте C #, которая хранит некоторую информацию.Я создал кучу текстового поля и комбинированного списка динамически, в зависимости от ввода пользователя.

Таким образом, здесь есть две строки, так как пользователь дал ввод как 2. Все компоненты в изображении создаются динамически.Для каждого компонента я создал класс для установки свойства и его поведения.

Теперь проблема в том, что мне нужно пройти компонент, используя вкладку.

Когда я пытался установить tabindex = 1 для первого текстового поля и tabindex = 2 для второго текстового поля.Я пересекаю компоненты по вертикали, как указано ниже

Фактический вывод: введите описание изображения здесь

Код, в котором я добавил, следующие,

        public class addDynamicCptboxComponents : add_components
                {
                    public override void add_dynamic_components(int getNoOfTxtBox, int pointX, int pointY, Form1 f)
                    {
                        TextBox txtBox = new TextBox();
                        f.panel1.Controls.Add(txtBox);
                        txtBox.Location = new Point(pointX, pointY);
                        txtBox.Size = new System.Drawing.Size(75, 23);
                        f.panel1.Controls.Add(txtBox);
                        txtBox.Name = "Add_txtBox" + getNoOfTxtBox;
//assigned the tabindex as 2 for the second textbox 
                        txtBox.TabIndex = 2;
                    }
                }

                public class addDynamicDateofServiceComponents : add_components
                {
                    public override void add_dynamic_components(int getNoOfTxtBox, int pointX, int pointY, Form1 f)
                    {
                        TextBox txtBox = new TextBox();
                        f.panel1.Controls.Add(txtBox);
                        txtBox.Location = new Point(pointX, pointY);
                        txtBox.Size = new System.Drawing.Size(75, 23);
                        f.panel1.Controls.Add(txtBox);
                        txtBox.Name = "Add_dos_txtBox" + getNoOfTxtBox;

    //assigned the tabindex as 1 for first textbox 
      txtBox.TabIndex = 1;
                    }
                }

Но мне нужно пройтись по компонентам по горизонтали, как указано ниже.

Ожидаемый результат: введите описание изображения здесь

Требуемый порядок табуляции указан на изображении выше.

1 Ответ

0 голосов
/ 20 ноября 2018

По названию вашего класса вы динамически добавляете строки в форму.Но так как вы жестко программируете индекс табуляции, результат для каждой строки выглядит как ожидаемый результат.Это означает, что с помощью вкладок вы переходите от индекса 1 к индексу 1 к индексу 2 к индексу 2 и т. Д. И т. Д.

Я бы посоветовал вам хранить в приложении где-нибудь в вашем приложении инкрементный индекс табуляции, который увеличиваетсяпосле того, как он назначен новому динамически созданному элементу управления.

В качестве очень простого примера я создал новый проект форм, в котором всего две кнопки.Первая добавляет новое текстовое поле, а вторая кнопка переключается в новую строку.И в этом примере все имеет индекс вкладки, который вам требуется.Код выглядит следующим образом:

public partial class Form1 : Form
{
    private int currentX = 0;
    private int currentY = 0;
    private const int tbWidth = 75;
    private const int tbHeight = 23;
    private int currentTabIndex = 0;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var textBoxOne = new TextBox();
        this.Controls.Add(textBoxOne);
        textBoxOne.Location = new Point(this.currentX, this.currentY);
        textBoxOne.Size = new Size(tbWidth, tbHeight);
        textBoxOne.TabIndex = currentTabIndex;
        textBoxOne.Text = $"{currentTabIndex}";

        currentTabIndex++;

        this.currentX += tbWidth + 5;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        currentY += tbHeight + 5;
        currentX = 0;
    }
}

Пожалуйста, помните, что это всего лишь простой пример.Я мог бы помочь вам лучше в контексте вашей заявки, если бы знал больше об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...