c#中向textbox中显示一个负数,显示之后负号为啥在后面?如果操作才能让显示的负号在前面呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中向textbox中显示一个负数,显示之后负号为啥在后面?如果操作才能让显示的负号在前面呢?相关的知识,希望对你有一定的参考价值。

如我要显示”-1.2345“,结果在textbox中显示的却是”1.2345-“,悬赏20,求大神指点!
我利用c#从串口读入一个字符串,如”b-1.23456“,我把”-1.23456“提出来,利用委托,把这个数(字符串形式)显示到textbox中,结果就成了”1.23456-“了。 而且我调试的时候发现”-1.23456“没有变,一直是它,但是显示的时候负号就在后面了

参考技术A 你看下textbox的这两个属性设置:RightToLeft 和TextAlign,是不是设成Yes和Right了?
把他们分别改成No和Left就行了本回答被提问者采纳
参考技术B 你的代码呢?追问

是这样的,我利用c#从串口读入一个字符串,如”b-1.23456“,我把”-1.23456“提出来,利用委托,把这个数(字符串形式)显示到textbox中,结果就成了”1.23456-“了。
而且我调试的时候发现”-1.23456“没有变,一直是它,但是显示的时候负号就在后面了

追答

没遇过,我猜问题可能出现在几个地方的可能,类型转换操作、显示在TextBox用的是属性赋值,还是数据单值绑定、是否TexBox某个显示相关的属性设置等,没有代码不好确定

如何从 MonthCalendar 显示日期到 TextBox C#

【中文标题】如何从 MonthCalendar 显示日期到 TextBox C#【英文标题】:How to show date from MonthCalendar to TextBox C# 【发布时间】:2016-07-11 07:13:23 【问题描述】:

我有两种形式,一种是月份,另一种是TextBox。 问题是选择它后我没有在 TextBox 上显示日期。 为了确定我编写了工作代码,我只在一个表单上做了同样的事情,而且效果很好。 将 MonthCalendar 设置为 public,与需要显示日期的 TextBox 相同。

这是 Button 和月历的代码:

public void mcKalendar_DateChanged()

    frmNovoVozilo fNv = new frmNovoVozilo();
    fNv.txtDatKupovine.Text =
          mcKalendar.SelectionRange.Start.ToShortDateString();


private void btnDatum_Click(object sender, EventArgs e)

    frmKalendar fKalen = new frmKalendar();
    fKalen.StartPosition = FormStartPosition.CenterScreen;
    fKalen.Show();

也尝试过 DateSelected 并且它给了我相同的结果,什么都没有。 谢谢。

【问题讨论】:

您遇到的问题是您试图引用第二个表单范围之外的表单。除非您在创建第二个时引用原始表单,否则您无法影响更改。请参阅我的回答,了解 2 种方法可以达到您想要的结果 【参考方案1】:

将值传输到前一个表单的一种方法是使用表单关闭事件处理程序和 get/set 方法来提取值。例如:

form1 = new Form1();
form1.FormClosing += new FormClosingEventHandler(GetDateFromForm);

private void GetDateFromForm(object sender, FormClosingEventArgs e)

    textbox1.Text = from1.GetDate;

然后在你的月历表格中,使用

string date;

public string GetDate get return date; set date = value;

Public Form2()

    date = monthCalendar1.SelectionStart.ToShortDateString();

关闭日历后,所选值将被转移。

另一种方法是在第二个表单的构造函数中发送对要应用更改的表单的引用。

在您的主要表单(带有按钮的表单)中,当您创建弹出表单时,使用语法Form2 calendarform = new Form2(this) 并编写一个公共方法来满足您的需要

public void SetText(string text)

    textbox.Text = text;

在您的第二种表格(带有月历的表格)中,您将能够参考前一种方法。例如:

public partial class Form2 : Form

    Form1 _owner;

    public Form2(Form1 form)
    
        InitializeComponent();

        _owner = form;
    

    private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
    
        _owner.SetText(monthCalendar1.SelectionEnd.ToShortDateString());
    

因为我们在第二个表单中引用了前一个表单,所以您可以调用将在 form1 上运行的所有公共方法。因此,在这种情况下,您可以从 form2 调用 SetText() 方法,这会将文本框更改为我们想要的任何内容 - 在您的情况下,您可以选择月历的值。

使用DateChanged 方法意味着它会在您更改日期时实时调用所述方法。

【讨论】:

由于我是 C# 新手,我确实需要一些语法方面的帮助。在第二种方法中,“Form2 calendarform = new Form2(this)”去哪里了?我得到:上下文中没有“this”关键字。 this 部分基本上表示“这个对象”。所以在这种情况下,this 表示将 form1 发送到第二个表单。第二个表单的构造函数需要将 Form1 作为一个值。即Form2(Form1 originalform) 您需要将Form2 calendarform = new Form2(this) 部分放在调用您的月历表格的按钮中

以上是关于c#中向textbox中显示一个负数,显示之后负号为啥在后面?如果操作才能让显示的负号在前面呢?的主要内容,如果未能解决你的问题,请参考以下文章

为啥查询信用卡账单的时候,金额前面会显示一个负号呢?

数字前面加负数怎么设置

C#怎么限制textbox只能输入小数和负号?

excel里负号怎么和其他的数字变成一行显示

C# 中,combox选择值,textbox自动显示相应的Combox数据

C#如何在一个窗体显示另一个窗体的文本内容