Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 public override decimal Click(decimal currentValue, Label display, IButtonAction previousAction)
 {
     //演算キーを押してない状態にする
     Operator.ResetOperetion();
     //baseを指定すると、スーパークラスのメソッドを呼び出せる。
     //これにより、ClearEntryButtonを実行する
     return(base.Click(currentValue, display, previousAction));
 }
Esempio n. 3
0
 //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;
 }
Esempio n. 4
0
 public Button(string imgName, Vector2 position, IButtonAction iAction1)
 {
     this.imgName  = imgName;
     this.position = position;
     this.iAction1 = iAction1;
     startPosition = position;
     Initialize();
 }
Esempio n. 5
0
        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;
            }
        }
Esempio n. 6
0
            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);//計算しなかったことにする
                }
            }
Esempio n. 7
0
 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);
 }
Esempio n. 8
0
        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;
                }
            }
        }
Esempio n. 9
0
        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);
            }
        }
Esempio n. 10
0
 //Clickメソッドをオーバーライドできるようにする
 public virtual decimal Click(decimal currentValue, Label display, IButtonAction previousAction)
 {
     //CEを押した際に反応する
     display.Text = "0";
     return(currentValue);
 }
Esempio n. 11
0
 public override decimal Click(decimal currentValue, Label display, IButtonAction previousAction)
 {
     Operator.ResetOperation();
     return base.Click(currentValue, display, previousAction);
 }
Esempio n. 12
0
 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;
     }
 }
Esempio n. 13
0
 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;
 }
Esempio n. 14
0
 public virtual decimal Click(decimal currentValue, Label display, IButtonAction previousAction)
 {
     display.Text = "0";
     return currentValue;
 }
Esempio n. 15
0
 public void SetAction(IButtonAction action)
 {
     iAction1 = action;
     Initialize();
 }
Esempio n. 16
0
 public Button(string imgName, Vector2 position, IButtonAction iAction1, IButtonAction iAction2, IButtonAction iAction3) :
     this(imgName, position, iAction1, iAction2)
 {
     this.iAction3 = iAction3;
 }