#region ================== Namespaces using System; using System.Windows.Forms; #endregion namespace CodeImp.DoomBuilder.GZBuilder.Controls { public partial class PairedIntControl : UserControl { #region ================== Events public event EventHandler OnValuesChanged; #endregion #region ================== Variables private int defaultValue; private bool blockUpdate; #endregion #region ================== Properties public string Label { get { return label.Text; } set { label.Text = value; } } public int DefaultValue { get { return defaultValue; } set { defaultValue = value; } } public int ButtonStep { get { return value1.ButtonStep; } set { value1.ButtonStep = value; value2.ButtonStep = value; } } #endregion public PairedIntControl() { InitializeComponent(); } public void SetValues(int val1, int val2, bool first) { blockUpdate = true; if (first) { value1.Text = val1.ToString(); value2.Text = val2.ToString(); } else { if (!string.IsNullOrEmpty(value1.Text) && value1.Text != val1.ToString()) value1.Text = string.Empty; if (!string.IsNullOrEmpty(value2.Text) && value2.Text != val2.ToString()) value2.Text = string.Empty; } blockUpdate = false; } public int GetValue1(int original) { return value1.GetResult(original); } public int GetValue2(int original) { return value2.GetResult(original); } private void checkValues() { bool changed = string.IsNullOrEmpty(value1.Text) || string.IsNullOrEmpty(value2.Text) || value1.GetResult(defaultValue) != defaultValue || value2.GetResult(defaultValue) != defaultValue; label.Enabled = changed; bReset.Visible = changed; if(!blockUpdate && OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty); } private void bReset_Click(object sender, EventArgs e) { value1.Text = defaultValue.ToString(); value2.Text = defaultValue.ToString(); checkValues(); } private void value1_WhenTextChanged(object sender, EventArgs e) { checkValues(); } } }