Linearstar.MikuMikuMoving.ApplyNoisePlugin.ApplyNoiseForm.ApplyNoiseForm C# (CSharp) Method

ApplyNoiseForm() public method

public ApplyNoiseForm ( ) : System
return System
        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;
                };
            }
        }