I have written a very simple program inside of a standard .NET 4.0 windows form (well a form opened by another form to be more exact) in C# using Visual Studio 2010. The basic idea is I have a series of text boxes with numbers. I want to be able to increase them by specific preset amounts and stop at a given limit. The limit being 20 increments (remaining) between all attributes (Hp,Mp, Str, Agil, Int, Will, Luck) (50/50/10/10/10/10/10), however decreasing an increment (by the same amount) should return the increment counter to its former state.
Ex: Number is 10. Its incremented 20 times so the number is 30.. it will not go under 9 or be incremmented by more than 1 under any circumstance. The code below allows HP to work perfectly. That is until I try to modify other numbers, then that goes out the window. (Along with this PC soon as this rate). The code for MP is litterally a copy/paste of HP with the textBox names changed.
However, MP and everything below act 'funny' after the first increment. The increment counter should never change by more than 1, however is often jumping by 50. The + and - buttons will stop responding and act as if there is no code linked to the buttons.
I have tried saving, rebuilding, cleaning, restarting. Gone back and verified the code multiple times. Even rewrote certain statements to various forms like number = number - 1; number -= 1;, number--; but to no avail. I have confirmed that number is written to at the start of each button click method to ensure that no other method/button click stored eronous data inside. I have confirmed that number is only declared one time at the start of the class.
There are no compile / build errors. Aside from automatically generated code to create the form and the objects on it, all code is in the file listed below. Close and Reset buttons appear to be doing their jobs correctly. The numbers the amounts are changing by are only numbers that I have hard coded, but not in the proper places. (Ex: Mp+ should be -1 Remaining, +50 Mp.. it does +50 to both). Not sure what else of relavence I can mention.
If its really that important I can try going through various increments / decrements to find exactly when 1 or 50 is added or subtracted from each text box, but I am trying to avoid such tedious and pointless meanderings.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class CharCreate : Form
{
int number; //temp for parsing
public CharCreate()
{InitializeComponent();}
private void buttonClose_Click(object sender, EventArgs e)
{this.Close();}
#region radioButtons
private void radioButtonWarrior_CheckedChanged(object sender, EventArgs e)
{
if (radioButtonWarrior.Checked == true)
{
number = Convert.ToInt32(textBoxStr.Text);
number += 10;
textBoxStr.Text = number.ToString();
}
if (radioButtonWarrior.Checked == false)
{
number = Convert.ToInt32(textBoxStr.Text);
number -= 10;
textBoxStr.Text = number.ToString();
}
}
private void radioButtonMage_CheckedChanged(object sender, EventArgs e)
{
if (radioButtonMage.Checked == true)
{
number = Convert.ToInt32(textBoxInt.Text);
number += 10;
textBoxInt.Text = number.ToString();
}
if (radioButtonMage.Checked == false)
{
number = Convert.ToInt32(textBoxInt.Text);
number -= 10;
textBoxInt.Text = number.ToString();
}
}
private void radioButtonThief_CheckedChanged(object sender, EventArgs e)
{
if (radioButtonThief.Checked == true)
{
number = Convert.ToInt32(textBoxAgil.Text);
number += 10;
textBoxAgil.Text = number.ToString();
}
if (radioButtonThief.Checked == false)
{
number = Convert.ToInt32(textBoxAgil.Text);
number -= 10;
textBoxAgil.Text = number.ToString();
}
}
#endregion
#region buttonD
private void buttonHpD_Click(object sender, EventArgs e)
{
number = Convert.ToInt32(textBoxRemain.Text);
if (number < 20 && Convert.ToInt32(textBoxHp.Text) > 50)
{
number++;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxHp.Text);
number = number - 50;
textBoxHp.Text = number.ToString();
}
}
private void buttonMpD_Click(object sender, EventArgs e)
{
number = Convert.ToInt32(textBoxRemain.Text);
if (number < 20 && Convert.ToInt32(textBoxMp.Text) > 50)
{
number++;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxMp.Text);
number = number - 50;
textBoxMp.Text = number.ToString();
}
}
private void buttonStrD_Click(object sender, EventArgs e)
{
number = Convert.ToInt32(textBoxRemain.Text);
if (number < 20 && Convert.ToInt32(textBoxStr.Text) > 10)
{
number++;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxStr.Text);
number--;
textBoxStr.Text = number.ToString();
}
}
private void buttonAgilD_Click(object sender, EventArgs e)
{
number = Convert.ToInt32(textBoxRemain.Text);
if (number < 20 && Convert.ToInt32(textBoxAgil.Text) > 10)
{
number++;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxAgil.Text);
number--;
textBoxAgil.Text = number.ToString();
}
}
private void buttonIntD_Click(object sender, EventArgs e)
{
number = Convert.ToInt32(textBoxRemain.Text);
if (number < 20 && Convert.ToInt32(textBoxInt.Text) > 10)
{
number++;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxInt.Text);
number--;
textBoxInt.Text = number.ToString();
}
}
private void buttonWillD_Click(object sender, EventArgs e)
{
number = Convert.ToInt32(textBoxRemain.Text);
if (number < 20 && Convert.ToInt32(textBoxWill.Text) > 10)
{
number++;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxWill.Text);
number--;
textBoxWill.Text = number.ToString();
}
}
private void buttonLuckD_Click(object sender, EventArgs e)
{
number = Convert.ToInt32(textBoxRemain.Text);
if (number < 20 && Convert.ToInt32(textBoxLuck.Text) > 10)
{
number++;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxLuck.Text);
number--;
textBoxLuck.Text = number.ToString();
}
}
#endregion
#region buttonU
private void buttonHpU_Click(object sender, EventArgs e)
{
number = Convert.ToInt32(textBoxRemain.Text);
if (number > 0)
{
number--;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxHp.Text);
number = number + 50;
textBoxHp.Text = number.ToString();
}
}
private void buttonMpU_Click(object sender, EventArgs e)
{
if (number > 0)
{
number--;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxMp.Text);
number = number + 50;
textBoxMp.Text = number.ToString();
}
}
private void buttonStrU_Click(object sender, EventArgs e)
{
if (number > 0)
{
number--;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxStr.Text);
number++;
textBoxStr.Text = number.ToString();
}
}
private void buttonAgilU_Click(object sender, EventArgs e)
{
if (number > 0)
{
number--;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxAgil.Text);
number++;
textBoxAgil.Text = number.ToString();
}
}
private void buttonIntU_Click(object sender, EventArgs e)
{
if (number > 0)
{
number--;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxInt.Text);
number++;
textBoxInt.Text = number.ToString();
}
}
private void buttonWillU_Click(object sender, EventArgs e)
{
if (number > 0)
{
number--;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxWill.Text);
number++;
textBoxWill.Text = number.ToString();
}
}
private void buttonLuckU_Click(object sender, EventArgs e)
{
if (number > 0)
{
number--;
textBoxRemain.Text = number.ToString();
number = Convert.ToInt32(textBoxLuck.Text);
number++;
textBoxLuck.Text = number.ToString();
}
}
#endregion
private void buttonReset_Click(object sender, EventArgs e)
{
radioButtonWarrior.Checked = true;
textBoxName.Text = "";
textBoxRemain.Text = "20";
textBoxHp.Text = "100";
textBoxMp.Text = "100";
textBoxStr.Text = "20";
textBoxAgil.Text = "10";
textBoxInt.Text = "10";
textBoxWill.Text = "10";
textBoxLuck.Text = "10";
}
}
}