Как динамически добавить текстовое поле и суммировать номер текстового поля?
Please tell me how to sum dynamically textbox. I was able to add textbox dynamically, but I wasn't able to sum. my textbox dynamically name is "penjualanjumlah"+i; I want to store total sum in penjualantotal using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace AccBeta_ { /// <summary> /// Interaction logic for penjualan.xaml /// </summary> public partial class penjualan : UserControl { public penjualan() { InitializeComponent(); penjualanjumlah.TextChanged += txt_TextChanged; } private int i; private int first; private void Button_Click(object sender, RoutedEventArgs e) { TextBox txt = new TextBox(); var rowDefinition = new RowDefinition(); rowDefinition.Height = GridLength.Auto; grd.RowDefinitions.Add(rowDefinition); txt.Height = 40; txt.Tag = "Jumlah"; txt.Name = "penjualanjumlah"+i; txt.FontSize = 16; txt.Style = (Style)Application.Current.Resources["CW-Inline-TextBox"]; txt.HorizontalAlignment = HorizontalAlignment.Stretch; txt.VerticalContentAlignment = VerticalAlignment.Bottom; txt.Margin = new Thickness(25,0,0,10); i++; Grid.SetColumn(txt, 0); Grid.SetRow(txt, i); grd.Children.Add(txt); TextBox txt2 = new TextBox(); var rowDefinition2 = new RowDefinition(); rowDefinition.Height = GridLength.Auto; txt2.Height = 40; txt2.FontSize = 16; txt2.HorizontalAlignment = HorizontalAlignment.Stretch; txt2.VerticalContentAlignment = VerticalAlignment.Bottom; txt2.Margin = new Thickness(10,0,30,10); Grid.SetColumn(txt2, 1); Grid.SetRow(txt2, i); grd.Children.Add(txt2); } private void txt_TextChanged(object sender, EventArgs e) { int.TryParse(penjualanjumlah.Text, out first); penjualantotal.Text = (first).ToString(); } } }
Что я уже пробовал:
пожалуйста, помогите мне, я искал в google, но это не мой случай. я хочу динамически добавлять и динамически суммировать. спасибо
Richard MacCutchan
Считайте текст из текстового поля, преобразуйте его в целое число,плавайте,удваивайте по мере необходимости, добавляйте его к чему угодно, преобразуйте его обратно в строку.
Member 12729689
мой реальный вопрос заключается в том, как это реализовать?
txt.Name = "пенджуаланджумлах"+i;
в такой
пенджуаланджумлах.Очередь textchanged += txt_TextChanged;
и вот так
инт.Метод tryparse(penjualanjumlah.Текст, первым);
пенджуалантотал.Текст = (первый).Метод toString();
Richard MacCutchan
Ссылка на ваше динамическое текстовое поле в приведенном выше коде выглядит следующим образом txt
, поэтому вам нужно использовать эту ссылку для добавления события Textchanged, как и другие свойства, которые вы устанавливаете. При необходимости вы можете использовать одно и то же событие для нескольких текстовых полей.
Динамически создаваемый объект-это то же самое, что и объект, созданный во время разработки. Вам просто нужно создать ссылку на уровне класса и инициализировать ее при создании объекта.
Member 12729689
Извините, я не могу понять, не могли бы вы исправить мой код, чтобы я мог учиться на нем?
Richard MacCutchan
Смотрите ниже, комментируемые строки.
Member 12729689
Мне очень жаль. Но сгенерированное текстовое поле все равно не суммируется с penjualantotal. Только первое текстовое поле (не генерируемое щелчком мыши) суммируется с penjualantotal.
Richard MacCutchan
Ну, вам нужно будет сложить несколько чисел вместе, чтобы получить сумму.
Member 12729689
и как это сделать? Я создал скриншот для вас. пожалуйста, проверьте.
извините за мой плохой английский. надеюсь, вы мне поможете.
https://imgur.com/a/ZQMpn
Richard MacCutchan
Получите текст из текстовых полей, содержащих значения.
Преобразуйте каждое значение в целочисленный (или десятичный) тип.
Добавьте значение к общей сумме.
Установите текст в поле итоги равным общему значению.
Я не могу понять, что такого сложного в такой элементарной логике.
Google translation (извините, я не говорю по-индонезийски):
Dapatkan teks dari TextBox yang berisi nilai.
Mengkonversi setiap nilai ke tipe integer (atau Desimal).
Tambahkan Нилай ке всего.
Тетапкан Котак Текс Дари тотал ке Нилай тотал.
Сая тидак менгерти АПА Янг сулит дилакукан сеперти логика дасар.
Member 12729689
извините, но я не знаю, как это сделать. потому что я очень хорошо разбираюсь в языке Си#
не могли бы вы исправить мой код? так что я буду учиться на этом. спасибо :)
Я могу получить значение из текстового поля penjualanjumlah (фиксированное), но я не могу получить значение из "penjualanjumlah"+I
общественные penjualan()
{
метод InitializeComponent();
пенджуаланджумлах.Очередь textchanged += txt_TextChanged;
"пенджуаланджумлах"+i.Очередь textchanged += txt_TextChanged;
}
\\и он получает ошибку
\\'int' не содержит определения для 'TextChanged', и ни один метод расширения 'TextChanged', принимающий первый аргумент типа 'int', не может быть найден (отсутствует ли директива using или ссылка на сборку?)
Richard MacCutchan
Этот: "penjualanjumlah"+i.TextChanged += txt_TextChanged;
это никогда не сработает. Вы не можете ссылаться на объекты таким образом.
Вам нужно изучить основы C#, прежде чем вы сможете написать такое приложение, и вы не можете изучить его, публикуя вопросы на форумах, подобных этому. Взгляните на это .NET книга ноль Чарльза Петцольда[^] что является отличной отправной точкой.
Member 12729689
Хэй, ты уже упоминал свой ответ раньше, как показать элемент списка?
if (tb.Name.Equals("penjualanjumlah0")). / / или penjualanjumlah1
{
Ящик для сообщений.Шоу("1");
}
он не показывал окно сообщения
Richard MacCutchan
Тогда имя не равно этому значению, но я не могу догадаться, что ваш код делает неправильно.
Member 12729689
Сено. Я обновляю код, и теперь окно сообщения отображается. А теперь проблема есть . Как суммировать все сгенерированные текстовые поля?
инт.Метод tryparse(ТБ.Текст, первым);
пенджуалантотал.Текст = (первый).Метод toString();
Itu просто показывает 1 значение текстового поля
Richard MacCutchan
Не знаю, что еще я могу сказать. Вам нужно зафиксировать значения все текстовые поля и сложите их вместе. Затем выведите итог в поле итог.
Member 12729689
Захват в список пенджуаланцев?
И как код суммировать список?
Richard MacCutchan
итого = результат1 + результат2 + result3;
Member 12729689
Я установил имя динамически. Поэтому каждый раз, когда я нажимаю кнопку, она генерирует текстовое поле с именем penjualan + i;
я++;
Если я использую result1+result2+result3, то это просто текстовое поле sum 3. Я хочу сгенерировать как можно больше текстового поля
Richard MacCutchan
Мне очень жаль, но я понятия не имею, что вы имеете в виду. Я попытался показать вам, как создать динамическое текстовое поле, как получить текст и проанализировать его до значения, как сложить значения вместе, чтобы получить общее значение, и как показать это общее значение в конечном текстовом поле. Я не знаю, что еще я могу предложить, поскольку вы, похоже, испытываете трудности с основами C#.