请教热心人,如何实现一个计算器+/-按钮?
想按一下,数字变成负的,前面有一个负号,再按一下变成正的,在按又是负的,随时按前面都会又一个负号,在按一下就变成正的,想想自己大概也会做,但是写代码时发现到处都是问题,不会做.谁能帮我用代码实现一下?先谢谢了 --------------------编程问答-------------------- 网上一搜相关例子很多的, --------------------编程问答-------------------- -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就是你的编辑框内的数据 --------------------编程问答--------------------
--------------------编程问答-------------------- hao --------------------编程问答-------------------- i =-i - -.就这么简单 --------------------编程问答-------------------- 我正好写过一个,你看看。
此按钮具有两种状态,并将在单击时自动切换状态。用户可响应ClickAtStateB、ClickAtStateA事件来分别获取两种状态下的单击事件。
按钮的显示内容需要使用方在响应里设置。你可以对此类进行一下扩展,添加诸如TextAtStateA、TextAtStateB这样的属性。
--------------------编程问答-------------------- 6楼的回答 OK!
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
}
}
补充:.NET技术 , C#