Member 10696161 Ответов: 1

Удаление цифр где id-100 из поле со списком текстовое поле с#


есть случай, который я загружаю из таблицы проектов в combobox:

private void InsertStatus_Load(object sender, EventArgs e)
{
 connection = new MySqlConnection();
 connection.ConnectionString = "datasource=localhost;port=3306;username=root;password=";
 connection.Open();

 string selectQuery5 = "SELECT ID, PROJECT_NAME FROM projekt1.projects";
            MySqlCommand command5 = new MySqlCommand(selectQuery5, connection);
            MySqlDataReader reader5 = command5.ExecuteReader();
            while (reader5.Read())
            {
                comboBox4.Items.Add(reader5.GetString("ID") + " " + reader5.GetString("PROJECT_NAME"));
            }
            connection.Close();
}


После загрузки данных в combobox он отображает все идентификаторы и имя_проекта

ID      PROJECT_NAME 
----    ------------
1       dasa
2       dsag3
3       S-BOX
.       .
.       .
.       .
97      s-BOX12
98      S-DIX
99      S-DIX
100     DAFDS
101     DAF
102     DSA


В случае, если идентификаторы были от 1 до 99, это решило бы проблему с отображением полных имен (в столбце PROJECT_NAME):

private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
             if (comboBox4.SelectedIndex != -1)
             {
                string[] parts = comboBox4.Items[comboBox4.SelectedIndex].ToString().Split(' ');
                textBox10.Text = parts[0];
                textBox4.Text = comboBox4.Text.Remove(0, 2).Trim();
             } 
        }


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

SBOX12, DSA, S-BOX, SBO$, etc


Но там где идентификаторы составляют не менее 100 я боюсь что он не будет отображать полные имена:

0 sbox, 1 das, 2 S-BOX,


Я понятия не имею, что мне делать.

Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Text.RegularExpressions;

namespace ControlDatabase
{
    public partial class InsertStatus : Form
    {
        MySqlConnection connection;
        MySqlCommand command;
        MySqlDataReader dr;
        Form1 frm1 = (Form1)Application.OpenForms["Form1"];
        public InsertStatus()
        {
            InitializeComponent();
        }
private void InsertStatus_Load(object sender, EventArgs e)
{
 connection = new MySqlConnection();
 connection.ConnectionString = "datasource=localhost;port=3306;username=root;password=";
 connection.Open();

 string selectQuery5 = "SELECT ID, PROJECT_NAME FROM projekt1.projects";
            MySqlCommand command5 = new MySqlCommand(selectQuery5, connection);
            MySqlDataReader reader5 = command5.ExecuteReader();
            while (reader5.Read())
            {
                comboBox4.Items.Add(reader5.GetString("ID") + " " + reader5.GetString("PROJECT_NAME"));
            }
            connection.Close();
}
private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
             if (comboBox4.SelectedIndex != -1)
             {
                string[] parts = comboBox4.Items[comboBox4.SelectedIndex].ToString().Split(' ');
                textBox10.Text = parts[0];
                textBox4.Text = comboBox4.Text.Remove(0, 2).Trim();
             } 
        }

RmcbainTheThird

почему вы не устанавливаете textBox4.Text = parts[1]?. Кроме того, существует очень сильное предположение, что в названии проекта нет пробелов. Это правда? Если да, то откуда вы знаете, что это так?

Member 10696161

хорошо, я пробовал с textBox4.Text = parts[1], но он не отображает полное имя с пробелом, потому что, например:

textBox4.Text = parts[1]

Exception -> S BOX
Reality -> S 

1 Ответов

Рейтинг:
2

RmcbainTheThird

ладно проблема в том что

comboBox4.Text.Remove(0, 2).Trim();

если у вас есть строка "100 слов"
и вы удаляете 2 символа, начиная с 0-го места(удаляя "10", вы получите "0 слово"

вы уже разделили строку еще на 2 части в зависимости от того сколько пробелов в тексте так что используйте это