在Windows窗体上显示变量的值

时间:2013-07-01 17:24:00

标签: c#

好的我是编程的新手,所以请耐心等待。我在其中创建了一个具有以下方法的类。

public LastPrice ()
{
WebClient wclient = new WebClient();
string rawprices = wclient.DownloadString("https://www.bitstamp.net/api/ticker/");
string lastprice = rawprices.Substring(27, 5);
}

我的问题是我可以使用哪个表单控件来显示表单上lastprice变量中的值。我希望每分钟都能继续更新价值。任何帮助将不胜感激。

提前致谢

2 个答案:

答案 0 :(得分:1)

标签或文本框是正常的(取决于它是否为只读)。如果希望用户能够复制值,也可以将文本框设置为只读。您可能希望使用计时器控件来每分钟处理更新。

答案 1 :(得分:0)

由于您正在使用JSON数据,而不是尝试使用字符串匹配(例如,.Substring())来查找您正在寻找的值,因此解析您从中获取的数据会好得多。服务器进入一个对象。当/如果您需要处理更复杂的数据时,字符串匹配将很快崩溃。

您将如何做到这一点:

步骤1:在项目中引用JSON.Net库。 (在visual studio中右键单击您的项目,然后单击“Manage NuGet packages”。搜索“json.net”,然后将其安装到您的项目中。

步骤2:创建一个表示您将从服务器获取的JSON的数据结构的类。 (如果这是JSON中一个非常复杂和庞大的数据结构,那么为它制作一个类是不实际的,并且有很多方法可以解决这个问题,但是现在你应该得到基础知识)。对于那个JSON,一个类看起来像这样:

public class Prices
{
    public decimal high { get; set; }
    public decimal last { get; set; }
    public double timestamp { get; set; }
    public decimal bid { get; set; }
    public decimal volume { get; set; }
    public decimal low { get; set; }
    public decimal ask { get; set; }
}

步骤3:现在您已经有了一个类,您可以轻松地将JSON数据转换为易于使用的格式:

var client = new WebClient
{
    Encoding = Encoding.UTF8    //It's good practice to specify UTF-8 encoding, because if you don't, then you can get garbled text back from the server
};

var rawData = client.DownloadString("https://www.bitstamp.net/api/ticker/");
var btcInfo = JsonConvert.DeserializeObject<Prices>(rawData);

//Now, btcInfo.last.ToString() will contain the value you're looking for.