public ApplyNoiseForm()
{
InitializeComponent();
this.Font = SystemFonts.MessageBoxFont;
var numericUpDowns = GetControls().OfType<NumericUpDown>().ToDictionary(_ => _.Name);
var controls = GetControls().OfType<TrackBar>()
.Select(_ => new
{
TrackBar = _,
NumericUpDown = _.Name.Replace("TrackBar", "NumericUpDown"),
})
.Where(_ => numericUpDowns.ContainsKey(_.NumericUpDown))
.Select(_ => new
{
_.TrackBar,
NumericUpDown = numericUpDowns[_.NumericUpDown],
});
foreach (var i in controls)
{
var changing = false;
var isPercentage = new[] { "gravityXTrackBar", "gravityYTrackBar", "gravityZTrackBar" }.Contains(i.TrackBar.Name);
i.TrackBar.ValueChanged += (sender, e) =>
{
if (changing)
return;
changing = true;
i.NumericUpDown.Value = isPercentage ? (decimal)i.TrackBar.Value / 100 : i.TrackBar.Value;
changing = false;
};
i.NumericUpDown.ValueChanged += (sender, e) =>
{
if (changing)
return;
changing = true;
i.TrackBar.Value = Math.Min(Math.Max(i.TrackBar.Minimum, (int)(isPercentage ? i.NumericUpDown.Value * 100 : i.NumericUpDown.Value)), i.TrackBar.Maximum);
changing = false;
};
}
}