Reputation: 75
I have two Textbox and I'm trying to add SelectionChanged
Event to the two textbox :
TextBox A => Amount
TextBox B => Summary
The scenario is like :
Two Textbox are empty:
The user enter the amount the summary will be equals to 100 * Amount
The user enter the summary after clear the field of amount , he should get summary / 100
in the textbox of amount
private void Amount_SelectionChanged(object sender, RoutedEventArgs e)
{
if (!string.IsNullOrEmpty(Amount.Text.ToString()))
{
Summary.IsReadOnly = true;
Summary.Text = (ToDecimalValue(Amount.Text) * 100).ToString();
Amount.IsReadOnly = false;
}
else
{
Summary.Text = "";
Summary.IsReadOnly = false;
}
}
private void Summary_SelectionChanged(object sender, RoutedEventArgs e)
{
if (!string.IsNullOrEmpty(Summary.Text.ToString()))
{
Amount.IsReadOnly = true;
Amount.Text = (ToDecimalValue(Summary.Text) / 100).ToString()
Summary.IsReadOnly = false;
}
else
{
Summary.Text = "";
Summary.IsReadOnly = false;
}
}
How can I do this?
Upvotes: 0
Views: 273
Reputation: 420
I believe there is a simple solution:
private bool _isEditing;
private void Amount_TextChanged(object _, RoutedEventArgs __)
{
if (_isEditing)
return;
_isEditing = true;
if (double.TryParse(Amount.Text, out double amount)
Summary.Text = (amount * 100).ToString();
else
Summary.Clear();
_isEditing = false;
}
private void Summary_TextChanged(object _, RoutedEventArgs __)
{
if (_isEditing)
return;
_isEditing = true;
if (double.TryParse(Summary.Text, out double summary)
Amount.Text = (summary / 100).ToString();
else
Amount.Clear();
_isEditing = false;
}
Notes:
ToDecimalValue()
by double.TryParse()
, but this will work only if the decimal separator matches that of the application's current culture._
and __
mean that the parameters are not used.Upvotes: 1