紧急求助:多国语言问题,Convert.ToDouble()出错

luxi0194 2009-11-11 02:07:11
目前有三种语言,当用中文,英文登录的时候没有错,当用法文登录的时候,这句话出错:Convert.ToDouble(lblPrice.Text.Trim()),错误是字符串格式不正确,但即使我用一个常量Convert.ToDouble("1")也会出错。
我的代码如下:
public partial class Test : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void btnTest_Click(object sender, EventArgs e)
{
txtPrice.Text = "*";
}

protected void txtCertainValue_TextChanged(object sender, EventArgs e)
{
txtPrice.Text = Convert.ToString(Math.Round(Convert.ToDecimal(lblPrice.Text.Trim()) + Convert.ToDecimal(txtCertainValue.Text.Trim()), 2));
}

protected void txtRate_TextChanged(object sender, EventArgs e)
{
txtPrice.Text = Convert.ToString(Math.Round(Convert.ToDouble(lblPrice.Text.Trim()) * Convert.ToDouble(string.Format("1.0{0}", txtRate.Text.Trim())), 2));
//txtPrice.Text = Convert.ToString(Math.Round(Convert.ToDouble(lblPrice.Text.Trim()) * Convert.ToDouble(1+Convert.ToDouble(txtRate.Text.Trim())/100), 2));
}

PageBase:做了关于Culture的处理。

protected override void InitializeCulture()
{
string currentCultureID = "";
if (Session["CultureID"] != null)
{
currentCultureID = Session["CultureID"].ToString();
}
string strCurrentCulture = ConfigurationSettings.AppSettings["DefaultCulture"].ToString();
if (currentCultureID == "1")
{
strCurrentCulture = "zh-CN";
}
else if (currentCultureID == "2")
{
strCurrentCulture = "en-US";
}
else
{
strCurrentCulture = "fr-FR";
}

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strCurrentCulture);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCurrentCulture);
}
...全文
403 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
limii 2009-11-11
  • 打赏
  • 举报
回复
up
luxi0194 2009-11-11
  • 打赏
  • 举报
回复 1
哈哈,多谢大家,问题已经解决。。。。。。。
在语言初始化的时候这样写:
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCurrentCulture);
luxi0194 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gomoku 的回复:]
引用楼主 luxi0194 的回复:
...
(string.Format("1.0{0}", txtRate.Text.Trim())), 2));



1.02在一些欧洲国家写成1,02。

[/Quote]

因为系统中很多地方都用到了Convert.toDouble,如果这样修改的话,基本上整个系统都要修改,所以能否有一个通用的方法,设置一下,可以不用改各个页面的代码??
gomoku 2009-11-11
  • 打赏
  • 举报
回复
更正2楼:

如果总是1.0232的形式,那可以用语言文化无关的Convert
Convert.ToDouble( ..., CultureInfo.InvariantCulture );
颤菊大师 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gomoku 的回复:]
如果总是1.0232的形式,那可以用语言文化无关的Convert
Convert.ToDouble( ...,CultureInfo.InstalledUICulture);
[/Quote]

学习
gomoku 2009-11-11
  • 打赏
  • 举报
回复
如果总是1.0232的形式,那可以用语言文化无关的Convert
Convert.ToDouble( ..., CultureInfo.InstalledUICulture);
gomoku 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 luxi0194 的回复:]
...
(string.Format("1.0{0}", txtRate.Text.Trim())), 2));
[/Quote]


1.02在一些欧洲国家写成1,02

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧