C#在字符串中保留字符串结束标点符号

时间:2013-08-11 14:37:19

标签: string special-characters punctuation

我一直在寻找几个小时,不能为我的生活弄清楚如何保持“一些问题?”从变成“?一些问题”......在消息框中,在文本框中,在字符串[]中。我试过用\?我试过附加文字+“?”和+“/?”没有什么工作!请帮助!

编辑:

这是在C#中。我写了很多代码,但问题很简单:

string questiontoask = "Some Question?";
MessageBox.Show(questiontoask); // this is just an example, I realize there are no buttons.

输出:?一些问题

或者:

textBox1.Lines = somestrarray;

输出:每行都带有任何标点符号“。,)(>< [] {} ...” 在字符串格式之前自动转换为标点符号...

这非常令人沮丧。

EDIT2:

在阅读了一些答案并进行了一些测试后,我发现我的文本框自动设置为RightToLeft = yes。在属性窗口中,它显示“no”,而在.Designer.cs中则没有设置。但这仍然没有解释它是如何在消息框中发生的。这发生在两个独立的解决方案中,但是当我创建一个新的错误时,没有错误!!!!!! WTF。

3 个答案:

答案 0 :(得分:0)

我做了一个非常简单的表单,只包含一个触发你的例子的按钮:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        String questiontoask = "Some Question?";
        MessageBox.Show(questiontoask);
    }
}

这个 给出了预期的结果,即Some Question? - 这个问题似乎在你的项目中,而不是C#/ .NET。 (试过4.0& 4.5)

这为您提供了两个选项:还可以创建一个示例项目,看看是否可以重现该问题,如果不能,则追踪差异。或者向我们提供更多相关信息/演示,以实际再现问题。

答案 1 :(得分:0)

检查您的Thread.CurrentUICulture财产。如果它不是en-GBen-US,那可能是罪魁祸首。

答案 2 :(得分:0)

Eurika !!在尝试了建议并进行进一步调试后,我找到了解决方案!或者更确切地说是问题......在某些地方,我将Main表单的RightToLeft属性设置为YES ...并且因为我的应用程序是基于Mdi的,所有我的mdichilren及其所有组件的RightToLeft属性都自动充当是,直到我手动更改每个。解决方案:将MainForm.RightToLeft设置为NO。现在进一步说明,我确实希望一些控件从右到左,但我想把标点放在右边...... @“逐字?”为我解决了这个问题。谢谢大家!