Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 64
1

Из textBox выбрать необходимые данные

05.04.2014, 16:25. Показов 1166. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В textBox вводятся данные в след. формате: Х=3 Y=5 Z=2. В каждой строке переменным присваиваются новые значения, мне необходимо прочесть одну строку, произвести операции со значениями этих переменных. Потом прочесть вторую строку и т.д. до самого конца. не могу никак понять как это сделать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2014, 16:25
Ответы с готовыми решениями:

Выбрать строку в ListView и передать данные в textBox
Привет. Как при виборе строки в listView передать даные в текстбоксы?

Из строки выбрать необходимые данные
Всем привет. Как можно из строки вынести некоторые данные? Например у меня есть строка string...

Нужно выбрать необходимые данные из массива
Привет, в переменной $massiv есть массив такого вида вывожу я его через print_r($massiv); //...

Как пропустить необходимые символы в textBox?
Подскажите, как пропустить символы дроби и точки? В примере проверяется `textBox1`на наличие цифр,...

9
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
05.04.2014, 16:41 2
а для каждого значения (X,Y,Z) ввести отдельный textBox? не судьба? :-D

Добавлено через 1 минуту
и да
C#
1
2
3
Convert.ToDouble(textBoxX.Text)
Convert.ToDouble(textBoxY.Text)
Convert.ToDouble(textBoxZ.Text)
тебе поможет
0
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 64
05.04.2014, 17:37  [ТС] 3
Я бы сделал отдельные textBoxы? но у меня задание такое. Просто пишется прога для управления станком с ЧПУ, в этом textBox в каждой строке записываются координаты точек которые станку необходимо последовательно пройти. Из-за этого и был выбран один textBox
0
Life Builder
532 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,754
05.04.2014, 17:46 4
Split() и Substring() вам в помощь
0
2151 / 1288 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
05.04.2014, 17:50 5
Цитата Сообщение от Alex201 Посмотреть сообщение
в этом textBox в каждой строке записываются координаты точек которые станку необходимо последовательно пройти. Из-за этого и был выбран один textBox
нифига не ясно. в какой строке еще ? и выбор одного тексбокса для координат ЧПУ не самое лучшее решение.
делайте три бокса , а лучше три нумерик бокса
0
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
05.04.2014, 17:57 6
кхм... а причем тут Интерфейс программы и Логика ее работы????, это 2 отдельные сущности сперва пишется логика программы, а уже на нее как на костный скелет натягивается мясо и кожа, то есть GUI
при написании программы вы должны абстрагироваться от интерфейса и писать логику таким образом чтобы логике было все равно откуда она получает данные, из БД с GUI или по сети.... логика должна обрабатывать данные полученные из разных источников ОДИНАКОВО

Добавлено через 1 минуту
если вам так нужно выкладывайте свои наработки, а я их проанализирую, и может и подскажу что то действенное
0
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 64
08.04.2014, 16:02  [ТС] 7
вот как у меня получилось:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
string[] split = textBox1.Text.Split(new Char[] { ' ', '=', '\n' }); 
int max = 0;       //для хранения числа строк
for (int i = 0; i < split.Length; i++)      //чтобы узнать число строк которые введены в textBox
{
    if (split[i] == ";")        //точкой с запятой я условно отделяю строки друг от друга   
         max ++;        
}
int[] X = new int[max];   //каждую координату решил сохранять в в своем массиве, при этом 
int[] Y = new int[max];  // номер в массиве соответствует номеру строки 
int[] Z = new int[max];
int stroka = 0;
for (int i = 0; i < split.Length; i++)
{
      if (split[i] == "x" || split[i] == "X")
      {
            X[stroka] = Convert.ToInt16(split[i + 1]);
      }
      if (split[i] == "y" || split[i] == "Y")
      {
            Y[stroka] = Convert.ToInt16(split[i + 1]);              
      }
      if (split[i] == "z" || split[i] == "Z")
      {
            Z[stroka] = Convert.ToInt16(split[i + 1]);
       }
       if (split[i] == ";")
       {
             stroka++;
       }
}
С точки зрения опытных людей подскажите, код нормально написан или можно как-то лучше написать?
Но вот есть проблема, если в textBox ввести
x=3 y=4 z=34 ;
x=4 z=3 z=23 ;
...
и после точки с запятой не поставить пробела, то прога как то непонятно работает. Вроде бы в массиве точка с запятой есть как отдельный элемент, а в цикле определения числа строк находит только последнюю точку с запятой.
это как бы не сильно большая проблема, но все-таки.
Помогите если не сложно.
0
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
09.04.2014, 01:34 8
Да что вы прицепились к этому несчастному TextBox?? вам же четким языком было сказано заведите для каждой координаты (X,Y,Z) персональный textBox и не геморройте себе голову, + используйте привязку данных
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System.Collections.Generic;
using System.ComponentModel;
using WindowsFormsApplication2.Annotations;
 
namespace WindowsFormsApplication2
{
    public interface ICloneable<T>
    {
        T Clone();
    }
 
    public class Data:INotifyPropertyChanged, ICloneable<Data>
    {
        public Data()
        {
        }
 
        public Data(double x, double y, double z)
        {
            X = x;
            Y = y;
            Z = z;
        }
 
        public Data Clone()
        {
            return new Data(X, Y, Z);
        }
 
        public double X { get; set; }
        public double Y { get; set; }
        public double Z { get; set; }
        public event PropertyChangedEventHandler PropertyChanged = delegate { };
 
        [NotifyPropertyChangedInvocator]
        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
 
    public class DataCollection : List<Data> { }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplication2
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
            InputDataElement = new Data();
            DataElements = new DataCollection();
            dataBindingSource.DataSource = InputDataElement;
            dataCollectionBindingSource.DataSource = DataElements;
        }
 
        private void buttonAddCoords_Click(object sender, EventArgs e)
        {
            DataElements.Add(InputDataElement.Clone());
            dataCollectionBindingSource.ResetBindings(true);
        }
 
        public Data InputDataElement { get; set; }
        protected DataCollection DataElements { get; set; }
    }
}
Миниатюры
Из textBox выбрать необходимые данные  
Вложения
Тип файла: zip WindowsFormsApplication2.zip (24.7 Кб, 5 просмотров)
0
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
09.04.2014, 01:36 9
писалось под MSVS 2010
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
09.04.2014, 17:56 10
Alex201, если разрешено пользоваться регулярными выражениями, то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 Dictionary<string, int> variables = new Dictionary<string, int>();
GetVars
{
    MatchCollection mc = Regex.Matches("X=3 Y=5 Z=2", @"(?:([A-Z]+)=(\d+))");
foreach (Match mm in mc)
            {
                     string key = mm.Groups[1].Value;
                     if(!variables.ContainsKey(key))
                     {
                           variables.Add(key, Int32.TryParse(mm.Groups[2].Value));
                     }
                     else
                     {
                           variables[key] = Int32.TryParse(mm.Groups[2].Value);
                     }
                    
                }
            }
}
0
09.04.2014, 17:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2014, 17:56
Помогаю со студенческими работами здесь

Выбрать из файла необходимые значения, вычислить и вернуть результат
Помогите с символами! Заранее спасибо!!! В файле myfile.txt содержится информация типа а= 1,0;...

Зная ИД вывести необходимые данные
Доброе время суток,Уважаемые,программисты! У меня к вам вопрос,который у вас вызовет удивление,он...

2 массива, Получить необходимые данные, БД PDO
Доброго времени суток! Помогите разобраться как мне получить необходимые данные и совместить их ,а...

Как вытащить необходимые данные с спарсенной страницы
Здравствуйте уважаемые участники форума! Есть программа кот. заносит html код страницы в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru