当前位置:编程学习 > C#/ASP.NET >>

请教热心人,如何实现一个计算器+/-按钮?

想按一下,数字变成负的,前面有一个负号,再按一下变成正的,在按又是负的,随时按前面都会又一个负号,在按一下就变成正的,想想自己大概也会做,但是写代码时发现到处都是问题,不会做.谁能帮我用代码实现一下?先谢谢了 --------------------编程问答-------------------- 网上一搜相关例子很多的, --------------------编程问答-------------------- -1*num --------------------编程问答-------------------- 不就是一个if else 吗?
简单的判断一下撒
if((int)Button1.text)<0
{}
else
{}
--------------------编程问答-------------------- btn_click(..)
{
txtbox.txt*=-1
} --------------------编程问答-------------------- 同上 --------------------编程问答-------------------- 就没有人知道单元运算符-么?

i = -i; --------------------编程问答-------------------- 一元运算符 --------------------编程问答-------------------- 哈哈,看来大家写程序都写呆的了。   往往到后来最简单的反而不会了。
  同意Ivony(授人以鱼不如授人以渔,上海谋生)! --------------------编程问答-------------------- 同上!!! --------------------编程问答-------------------- bool x=true;
按一下bool变一下就行了
Click()
{
if(x)
{
1*m;

}
else
{
  -1*m
}
x=!x
} --------------------编程问答-------------------- 用3楼的方法,其中num就是你的编辑框内的数据 --------------------编程问答--------------------
引用 6 楼 ivony 的回复:
就没有人知道单元运算符-么?

i   =   -i;

--------------------编程问答--------------------
引用 12 楼 liherun 的回复:
引用 6 楼 ivony 的回复:
就没有人知道单元运算符-么?

i   =   -i;
hao --------------------编程问答-------------------- i =-i - -.就这么简单 --------------------编程问答-------------------- 我正好写过一个,你看看。
此按钮具有两种状态,并将在单击时自动切换状态。用户可响应ClickAtStateB、ClickAtStateA事件来分别获取两种状态下的单击事件。
按钮的显示内容需要使用方在响应里设置。你可以对此类进行一下扩展,添加诸如TextAtStateA、TextAtStateB这样的属性。


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace CommonFunction
{
    /// <summary>
    /// 具有两种状态的按钮,按钮状态的切换在ClickAtStateA、ClickAtStateB事件之后,Click事件之前发生。可在ClickA、ClickB事件的处理程序对是否切换状态进行干预。
    /// </summary>
    public partial class TwoStateButton : Button
    {
        public class TSBEventArgs:EventArgs
        {
            private bool _Cancel = false;

            /// <summary>
            /// 指示是否取消该事件
            /// </summary>
            public bool Cancel
            {
                get{return _Cancel;}
                set{_Cancel = value;}
            }
        }

        /// <summary>
        /// 按钮状态
        /// </summary>
        public enum EnumButtonState { StateA = 0, StateB = 1 };

        #region 数据

        /// <summary>
        /// 按钮当前状态
        /// </summary>
        private EnumButtonState _State;

        /// <summary>
        /// 标记状态是否在变更过程中
        /// </summary>
        private bool StateChanging = false;

        /// <summary>
        /// 事件参数
        /// </summary>
        private CancelEventArgs EventArgs = new CancelEventArgs();

        #endregion

        #region 属性

        /// <summary>
        /// 按钮状态
        /// </summary>
        public EnumButtonState State
        {
            get { return _State; }
            set
            {
                if (StateChanging || _State == value) return;

                EventArgs.Cancel = false;

                StateChanging = true;

                if (_BeforeStateChange != null) _BeforeStateChange(this,EventArgs);

                StateChanging = false;

                if (EventArgs.Cancel) return;

                _State = value;
            }
        }

        #endregion

        #region 事件

        private event EventHandler<CancelEventArgs> _ClickAtStateA;

        private event EventHandler<CancelEventArgs> _ClickAtStateB;

        private event EventHandler<CancelEventArgs> _BeforeStateChange;

        /// <summary>
        /// 按钮在状态A时的单击事件
        /// </summary>
        public event EventHandler<CancelEventArgs> ClickAtStateA
        {
            add { this._ClickAtStateA += value; }
            remove { this._ClickAtStateA -= value; }
        }

        /// <summary>
        /// 按钮在状态B时的单击事件
        /// </summary>
        public event EventHandler<CancelEventArgs> ClickAtStateB
        {
            add { this._ClickAtStateB += value; }
            remove { this._ClickAtStateB -= value; }
        }

        /// <summary>
        /// 状态改变之前触发
        /// </summary>
        public event EventHandler<CancelEventArgs> BeforeStateChange
        {
            add
            {
                _BeforeStateChange += value;
            }
            remove
            {
                _BeforeStateChange -= value;
            }
        }

        #endregion

        #region 方法

        public TwoStateButton()
        {
            InitializeComponent();

            this.Click += new EventHandler(this.ClickOp);
        }

        protected override void OnPaint(PaintEventArgs pe)
        {
            // TODO: 在此处添加自定义绘制代码

            // 调用基类 OnPaint
            base.OnPaint(pe);
        }

        /// <summary>
        /// 单击处理程序:负责触发ClickAtA、ClickAtB事件,并进行状态切换
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void ClickOp(object sender, EventArgs args)
        {
            //if (StateChanging) return;

            StateChanging = true;

            //TSBEventArgs tsbArgs = new TSBEventArgs();

            EventArgs.Cancel = false;

            if (State == EnumButtonState.StateA)
            {
                if (_ClickAtStateA != null) _ClickAtStateA(sender, EventArgs);
            }
            else
            {
                if (_ClickAtStateB != null) _ClickAtStateB(sender, EventArgs);
            }

            StateChanging = false;

            if (!EventArgs.Cancel) State = (EnumButtonState)(1- (int)State);

            //StateChanging = false;
        }

        /// <summary>
        /// 重置状态
        /// </summary>
        public void Reset()
        {
            this._State = EnumButtonState.StateA;
        }

        /// <summary>
        /// 重置状态
        /// </summary>
        /// <param name="State">目标状态</param>
        public void Reset(EnumButtonState State)
        {
            this._State = State;
        }

        #endregion
    }
}
--------------------编程问答-------------------- 6楼的回答  OK!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,