C++/CLI sumowanie wartości z kilku textboxów.

0

Witam, chciałbym prosić o pomoc z moją aplikacją. Tworze aplikacje, która ma sumować ilość kilogramów mięsa np. kurczaka i sumować wartość netto. Np. filet z kurczaka 20kg wartość netto 300 zł. Na zdjęciu widać o co chodzi. Tak wygląda kod. Jest przycisk oblicz. Jeśli się da to nie musi go być, ale jak trzeba będzie to niech już zostanie. bardzo proszę o pomoc.!! Jeżeli dałem wątek do złego działu to proszę o przeniesienie.

 #pragma endregion


	private: System::Void MyForm_Load(System::Object^  sender, System::EventArgs^  e) {
	}
private: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
}
private: System::Void textBox73_TextChanged(System::Object^  sender, System::EventArgs^  e) {
}
private: System::Void btn2_Click(System::Object^  sender, System::EventArgs^  e) {
	this->Close();
}
private: System::Void textBox80_TextChanged(System::Object^  sender, System::EventArgs^  e) {
}
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
}
private: System::Void okienkoToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
	MyForm::FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedDialog;
}
private: System::Void przypnijToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
	MyForm::FormBorderStyle = System::Windows::Forms::FormBorderStyle::None;
	TopMost = true;
}
private: System::Void zakończToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
	if (MessageBox::Show("Czy wyłączyć kalkulator?", "Kalkulator", MessageBoxButtons::YesNo, MessageBoxIcon::Question) == System::Windows::Forms::DialogResult::Yes) {
		Application::Exit();
	}
}
private: System::Void pomocToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
	Pomoc^ Onas = gcnew Pomoc();
	Onas->Show();
}
private: System::Void txt5_TextChanged(System::Object^  sender, System::EventArgs^  e) {
}		
private: System::Void txt6_TextChanged(System::Object^  sender, System::EventArgs^  e) {
}
private: System::Void KGoblicz_Click(System::Object^  sender, System::EventArgs^  e) {

}
};
}
0

Niesamowicie z tym kombinujesz.

  • Nie używaj C++ CLI, bo to tak jakbyś przeniósł się z programowaniem o dobre 15 lat wstecz;
  • Nie twórz tych TextBox'ów ręcznie, bo co będzie jeżeli w jednej kolumnie będziesz musiał zrobić ich 50? Trochę kłopot i lepiej wrzucić je do jakiejś listy.

Przykład:

using System;
using System.Text;
using System.Linq;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;

class Program {
    public static void Main(string[] args) {
        var form = new Form();
        var panel = new TableLayoutPanel();
        panel.Dock = DockStyle.Fill;

        var textboxes = new List<TextBox>();
        var count = 5;
        TextBox textbox = null;
        for(int i = 0; i < count; i++)
        {
            textbox = new TextBox();
            textbox.Text = (i * 0.24 + 1).ToString();

            textboxes.Add(textbox);
            panel.Controls.Add(textboxes[i]);
        }        

        var sum = new TextBox();
        sum.BackColor = Color.Blue;
        sum.ForeColor = Color.White;
        sum.Text = "0";
        foreach(var tx in textboxes)
        {
            double res = 0;
            if (tx.Text != "" && Double.TryParse(tx.Text, out res))
                sum.Text = (Double.Parse(sum.Text) + res).ToString();
        }

        panel.Controls.Add(sum);
        form.Controls.Add(panel);
        form.ShowDialog();
    }
}
2

Ponieważ nie napisałeś z czym masz właściwie trudność, mogę kod co najwyżej upiększyć.

private:
	void MyForm_Load(System::Object ^sender, System::EventArgs ^e)
	{
	}

	void textBox1_TextChanged(System::Object ^sender, System::EventArgs ^e)
	{
	}

	void textBox73_TextChanged(System::Object ^sender, System::EventArgs ^e)
	{
	}

	void btn2_Click(System::Object ^sender, System::EventArgs ^e)
	{
		this->Close();
	}

	void textBox80_TextChanged(System::Object ^sender, System::EventArgs ^e)
	{
	}

	void button1_Click(System::Object ^sender, System::EventArgs ^e)
	{
	}

	void okienkoToolStripMenuItem_Click(System::Object ^sender, System::EventArgs ^e)
	{
		MyForm::FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedDialog;
	}

	void przypnijToolStripMenuItem_Click(System::Object ^sender, System::EventArgs ^e)
	{
		MyForm::FormBorderStyle = System::Windows::Forms::FormBorderStyle::None;
		TopMost = true;
	}

	void zakończToolStripMenuItem_Click(System::Object ^sender, System::EventArgs ^e)
	{
		if (MessageBox::Show("Czy wyłączyć kalkulator?", "Kalkulator",
				   MessageBoxButtons::YesNo,
				   MessageBoxIcon::Question) == System::Windows::Forms::DialogResult::Yes)
		{
			Application::Exit();
		}
	}

	void pomocToolStripMenuItem_Click(System::Object ^sender, System::EventArgs ^e)
	{
		Pomoc ^Onas = gcnew Pomoc();
		Onas->Show();
	}

	void txt5_TextChanged(System::Object ^sender, System::EventArgs ^e)
	{
	}

	void txt6_TextChanged(System::Object ^sender, System::EventArgs ^e)
	{
	}

	void KGoblicz_Click(System::Object ^sender, System::EventArgs ^e)
	{
	}
0

Problem mam z napisaniem funkcji, która sumowałaby wartości z tych textboxów. Dzięki za odpowiedzi i podpowiedzi i liczę na więcej.

0
mefisto12 napisał(a):

Problem mam z napisaniem funkcji, która sumowałaby wartości z tych textboxów. Dzięki za odpowiedzi i podpowiedzi i liczę na więcej.

using System;
using System.Text;
using System.Linq;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;

class Program {
    private static string Sum(List<TextBox> textboxes)
    {
        double sum = 0;
        foreach (var tx in textboxes)
        {
            double res = 0;
            if (!string.IsNullOrWhiteSpace(tx.Text) && Double.TryParse(tx.Text, out res)) sum = sum + res;
        }
        return sum.ToString();
    }

    public static void Main(string[] args) {
        var form = new Form();
        var panel = new TableLayoutPanel();
        panel.Dock = DockStyle.Fill;

        var sum = new TextBox();
        sum.BackColor = Color.Blue;
        sum.ForeColor = Color.White;
        sum.Text = "0";

        var textboxes = new List<TextBox>();
        var count = 5;
        for(int i = 0; i < count; i++)
        {
            textboxes.Add(new TextBox());
            textboxes[i].TextChanged += (obj, e) =>
            {
                sum.Text = Sum(textboxes);
            };
            panel.Controls.Add(textboxes[i]);
        }        

        panel.Controls.Add(sum);
        form.Controls.Add(panel);
        form.ShowDialog();
    }
}

I naprawdę daruj C++ CLI, bo to przestarzała już dawno technologia.

0

To co proponujesz do tworzenia aplikacji okienkowych ??

1 użytkowników online, w tym zalogowanych: 0, gości: 1