void ButtonClick(object sender, EventArgs e) { var button = sender as Button; currentValue = (button.Tag as IButtonAction).Click (currentValue, label1, previousAction); previousAction = button.Tag as IButtonAction; }
public override decimal Click(decimal currentValue, Label display, IButtonAction previousAction) { //演算キーを押してない状態にする Operator.ResetOperetion(); //baseを指定すると、スーパークラスのメソッドを呼び出せる。 //これにより、ClearEntryButtonを実行する return(base.Click(currentValue, display, previousAction)); }
//string clickText = "Button was Clicked!"; public Button(Texture2D texture, SpriteFont font, SpriteBatch sBatch, IButtonAction action) { _action = action; image = texture; this.font = font; position = new Rectangle(0, 0, image.Width, image.Height); spriteBatch = sBatch; }
public Button(string imgName, Vector2 position, IButtonAction iAction1) { this.imgName = imgName; this.position = position; this.iAction1 = iAction1; startPosition = position; Initialize(); }
public Form1() { InitializeComponent(); previousAction = new NumberButtonAction(0); buttonNum0.Tag = previousAction; buttonNum1.Tag = new NumberButtonAction(1); buttonNum2.Tag = new NumberButtonAction(2); buttonNum3.Tag = new NumberButtonAction(3); buttonNum4.Tag = new NumberButtonAction(4); buttonNum5.Tag = new NumberButtonAction(5); buttonNum6.Tag = new NumberButtonAction(6); buttonNum7.Tag = new NumberButtonAction(7); buttonNum8.Tag = new NumberButtonAction(8); buttonNum9.Tag = new NumberButtonAction(9); buttonAC.Tag = new AllClearButton(); buttonCE.Tag = new ClearEntryButton(); buttonSlash.Tag = new Operator((left, right) => { if (right == 0) { MessageBox.Show("0除算は禁止事項です"); return(0); } else { return(left / right); } }); buttonAsterisk.Tag = new Operator((left, right) => left * right); buttonPlus.Tag = new Operator((left, right) => left + right); buttonMinus.Tag = new Operator((left, right) => left - right); buttonEqual.Tag = new Operator((left, right) => right); foreach (var button in panel1.Controls.OfType <Button>()) { if (button.Text != ".") { button.Click += ButtonClick; } } void ButtonClick(object sender, EventArgs e) { var button = sender as Button; currentValue = (button.Tag as IButtonAction).Click(currentValue, label1, previousAction); previousAction = button.Tag as IButtonAction; } }
public decimal Click(decimal currentValue, Label display, IButtonAction previousAction) { try { decimal nextVal = previousCalculate(currentValue, decimal.Parse(display.Text)); previousCalculate = calculate; display.Text = nextVal.ToString(); return(nextVal); } catch (OverflowException) { MessageBox.Show("オーバーフロー!"); return(currentValue);//計算しなかったことにする } }
public decimal Click(decimal currentValue, Label display, IButtonAction previousAction) { if (display.Text == "0" || previousAction is Operator) { display.Text = displayNumber.ToString(); } else { if (IsOverFlow(display.Text)) { MessageBox.Show("これ以上入力できません"); } else { display.Text += displayNumber; //文字列+ほかの型を実行すると自動的にほかの型はToString()される } } return(currentValue); }
public Form1() { InitializeComponent(); previousAction = new NumberButtonAction(0); buttonNum0.Tag = previousAction; buttonNum1.Tag = new NumberButtonAction(1); buttonNum2.Tag = new NumberButtonAction(2); buttonNum3.Tag = new NumberButtonAction(3); buttonNum4.Tag = new NumberButtonAction(4); buttonNum5.Tag = new NumberButtonAction(5); buttonNum6.Tag = new NumberButtonAction(6); buttonNum7.Tag = new NumberButtonAction(7); buttonNum8.Tag = new NumberButtonAction(8); buttonNum9.Tag = new NumberButtonAction(9); buttonAC.Tag = new AllClearButton(); buttonCE.Tag = new ClearEntryButton(); buttonSlash.Tag = new Operator((left, right) => { if (right == 0) { MessageBox.Show("0で除算はできません。"); return 0; } return left / right; }); buttonAsterisk.Tag = new Operator((left, right) => left * right); buttonMinus.Tag = new Operator((left, right) => left - right); buttonPlus.Tag = new Operator((left, right) => left + right); buttonEqual.Tag = new Operator((Left, right) => right); foreach (var button in panel1.Controls.OfType<Button>()) { if (button.Text != ".") { button.Click += ButtonClick; } } }
private void ReadActions(XElement node) { _actions = new List <IButtonAction>(); foreach (XElement child in node.Elements()) { if (child.Name != "action") { continue; } string type = GetAttributeValue(child, "type", "legacy"); Type actionClass; if (!Actions.TryGetValue(type, out actionClass)) { throw new ArgumentException($"No button action type {type} is registered."); } IButtonAction newAction = naid.ReflectionUtils.ConstructParameterless <IButtonAction>(actionClass); newAction.Init(child); _actions.Add(newAction); } }
//Clickメソッドをオーバーライドできるようにする public virtual decimal Click(decimal currentValue, Label display, IButtonAction previousAction) { //CEを押した際に反応する display.Text = "0"; return(currentValue); }
public override decimal Click(decimal currentValue, Label display, IButtonAction previousAction) { Operator.ResetOperation(); return base.Click(currentValue, display, previousAction); }
public decimal Click(decimal currentValue, Label display, IButtonAction previousAction) { try { decimal nextVal = previousCalculate (currentValue, decimal.Parse(display.Text)); previousCalculate = calculate; display.Text = nextVal.ToString(); return nextVal; } catch (OverflowException) { MessageBox.Show("オーバーフロー"); return currentValue; } }
public decimal Click(decimal currentValue, Label display, IButtonAction previousAction) { if (display.Text == "0" || previousAction is Operator) { display.Text = displayNumber.ToString(); } else { display.Text += displayNumber; } return currentValue; }
public virtual decimal Click(decimal currentValue, Label display, IButtonAction previousAction) { display.Text = "0"; return currentValue; }
public void SetAction(IButtonAction action) { iAction1 = action; Initialize(); }
public Button(string imgName, Vector2 position, IButtonAction iAction1, IButtonAction iAction2, IButtonAction iAction3) : this(imgName, position, iAction1, iAction2) { this.iAction3 = iAction3; }