AHHHHH好吧这让我疯了。
为什么我的小数点何时出现在错误的位置,例如
如果我在文本框中有字符串567并单击我希望(或我想要)文本框更改为567的小数点按钮,而是我得到.567
当我添加另一个号码时它只会进入正确的位置,例如如果我有数字4然后在做完上述之后我会得到567.4
编辑:
继承我的全部代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace Calculator
{
public partial class frmCurrencyCalc : Form
{
public frmCurrencyCalc()
{
InitializeComponent();
}
private void cmdZero_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "0";
}
else
{
txtScreen.AppendText("0");
}
}
private void cmd1_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "1";
}
else
{
txtScreen.AppendText("1");
}
}
private void cmdTwo_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "2";
}
else
{
txtScreen.AppendText("2");
}
}
private void cmdThree_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "3";
}
else
{
txtScreen.AppendText("3");
}
}
private void cmdFour_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "4";
}
else
{
txtScreen.AppendText("4");
}
}
private void cmdFive_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "5";
}
else
{
txtScreen.AppendText("5");
}
}
private void cmdSix_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "6";
}
else
{
txtScreen.AppendText("6");
}
}
private void cmdSeven_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "7";
}
else
{
txtScreen.AppendText("7");
}
}
private void cmdEight_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "8";
}
else
{
txtScreen.AppendText("8");
}
}
private void cmdNine_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "9";
}
else
{
txtScreen.AppendText("9");
}
}
private void cmdDecimal_Click(object sender, EventArgs e)
{
txtScreen.AppendText(".");
cmdDecimal.Enabled = false;
}
private void cmdCancel_Click(object sender, EventArgs e)
{
txtScreen.Text = "0";
cmdDecimal.Enabled = true;
}
}
}
答案 0 :(得分:1)
我的建议是将TextAlign
设置为右,但将RightToLeft
设置为否。
编辑:话虽如此,这个问题可能与这些设置无关。
我记得有一个朋友在2009年初在Windows Vista上的Visual Studio 2008中发现了类似于此的错误。奇怪的是,在Windows XP上的相同版本的Visual Studio上没有出现同样的问题。
如果您尚未将Visual Studio / .NET 3.5更新为Service Pack 1,我建议您这样做并查看它是否能解决问题。
答案 1 :(得分:1)
RightToLeft
看起来是你的问题。
如MSDN中所述,
RightToLeft属性用于 国际申请所在地 语言是从右到右写的 左,如希伯来语或阿拉伯语。什么时候 此属性设置为 RightToLeft .. ::。是的,控制元素 显示包含文本的文本 从右到左。
正如之前的答案之一所示,这应该设置为false,但TextAlign
设置为Right以模仿真实计算器的外观。
答案 2 :(得分:1)
我的建议是 - 定义业务层。在你的情况下 - 一个双变量。点击按钮后,首先更新变量。然后格式化值。
答案 3 :(得分:0)
也许尝试不同的方法:
private void AddDecimal()
{
txtScreen.SelectionLength = txtScreen.TextLength;
txtScreen.SelectedText += ".";
}
(也是您的文本框,文字对齐,右对齐 ...如果不是,可能会导致您的问题。)
答案 4 :(得分:0)
我想你在这里有一些事情。
从它的外观来看,你已经设定了:
txtScreen。right to left = true;
如果只追加小数点,则会得到您描述的结果。尝试使用类似的东西:
txtScreen.AppendText(” 00" );
这将为您提供您所描述的结果。
你可能会打开一堆蠕虫。当您开始格式化文本框时,您正在将其从保持值更改为演示文稿。例如:
decimal value = 567;
txtScreen.Text = value.ToString("0.00");
然后你必须开始编写疯狂的验证规则以避免像567.00.1等的值。
答案 5 :(得分:0)
只是为了让大家知道谁有兴趣。
我设法以某种方式修复它。我所做的只是在设计代码中删除从右到左的东西,然后将它重新对齐(使用GUI)到右边并且它的工作......奇怪,因为我上次没有做任何不同......
哦,好吧
谢谢大家的帮助
备受好评
X