DataTable dtNumberUpDownValues = null;
private void Form1_Load(object sender, EventArgs e)
{
BindDropDown();
}
bool isFIrst = false;
private void BindDropDown()
{
isFIrst = true;
//Some how get the Data from DB - it should be ordered (sorted).
dtNumberUpDownValues = getValues();
if (dtNumberUpDownValues.Rows.Count > 0)
{
//zero th row contains the smallest value
numericUpDown1.Minimum = Convert.ToDecimal(dtNumberUpDownValues.Rows[0]["NumberValue"]);
//last th row contains the max value
numericUpDown1.Maximum = Convert.ToDecimal(dtNumberUpDownValues.Rows[dtNumberUpDownValues.Rows.Count - 1]["NumberValue"]);
}
oldValue = numericUpDown1.Value;
}
private DataTable getValues()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("NumberValue", typeof(decimal)));
DataRow dr = dt.NewRow();
dr["NumberValue"] = 10;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["NumberValue"] = 22;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["NumberValue"] = 33;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["NumberValue"] = 47;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["NumberValue"] = 660;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["NumberValue"] = 1100;
dt.Rows.Add(dr);
return dt;
}
decimal oldValue = 0;
bool isOnceChanged = false;
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
if (isFIrst)
{
isFIrst = false;
return;
}
if (isOnceChanged)
return;
if (dtNumberUpDownValues != null)
{
if (oldValue < numericUpDown1.Value)
{
DataRow[] drs = dtNumberUpDownValues.Select("NumberValue > " + numericUpDown1.Value);
if (drs.Length > 0)
{
isOnceChanged = true;
numericUpDown1.Value = Convert.ToDecimal(drs[0]["NumberValue"]);
}
}
else
{
DataRow[] drs = dtNumberUpDownValues.Select("NumberValue < " + numericUpDown1.Value);
if (drs.Length > 0)
{
isOnceChanged = true;
numericUpDown1.Value = Convert.ToDecimal(drs[drs.Length - 1]["NumberValue"]);
}
}
}
oldValue = numericUpDown1.Value;
}
private void numericUpDown1_Click(object sender, EventArgs e)
{
isOnceChanged = false;
}