我有一个按钮,如果我点击它,它会在游戏服务器上检索玩家信息。 我需要找出一种在网格中显示它的方法。
当我做一个Console.Write(sendRConCommand(“播放器”))
这是输出到我的控制台:
Players on server:
[#] [IP Address]:[Port] [Ping] [GUID] [Name]
--------------------------------------------------
0 XXX.XXX.XXX.XXX:XXXX 46 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) [FF]Otto
1 XXX.XXX.XXX.XXX:XXXX 109 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) [BBC] Emma Watson
2 XXX.XXX.XXX.XXX:XXXX 46 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) [FF]Miikka
3 XXX.XXX.XXX.XXX:XXXX 46 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) Bops
4 XXX.XXX.XXX.XXX:XXXX 32 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) [BBC] Wesley Snipes
5 XXX.XXX.XXX.XXX:XXXX 31 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) Pierre
6 XXX.XXX.XXX.XXX:XXXX 46 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) bertrand
7 XXX.XXX.XXX.XXX:XXXX -1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) SIGGI (Lobby)
8 XXX.XXX.XXX.XXX:XXXX 47 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) Min (Lobby)
9 XXX.XXX.XXX.XXX:XXXX 32 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) Frostpwnz
10 XXX.XXX.XXX.XXX:XXXX 31 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) Zulu BASSA (Lobby)
11 XXX.XXX.XXX.XXX:XXXX 31 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) Zardock (Lobby)
14 XXX.XXX.XXX.XXX:XXXX 63 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(OK) plbmas
(13 players in total)
我需要弄清楚如何在网格中显示此信息,同时显示列标题。
提前致谢:)
答案 0 :(得分:1)
这将取决于它如何从游戏服务器传回...如果它来自一个字符串然后这需要解析(拆分)然后排列成你的网格处理的格式..
如果它的DataGridView(winform)然后数据源接收列表<> ..
答案 1 :(得分:1)
您可以使用string.Format指定宽度,如下所示:
string.Format("{0,-10}{1,-10}", "column1", "column2");
其中负数表示左对齐值。见这里:http://msdn.microsoft.com/en-us/library/fht0f5be.aspx
答案 2 :(得分:0)
好的,如果你想要WPF网格,请做下一步:
将DataGrid
放在表单上。将DataGrid的AutoGenerateColumns
属性设置为True
。
在代码隐藏集dataGrid.ItemsSource = playerInfo
(列表数组)
答案 3 :(得分:0)
您需要将文本转换为数据结构。目前它是全文,因此它只会显示在一列中。
我建议你根据回车分割数据,然后对每个玩家行(第3行以后)拆分数据。以下是粗略的代码大纲,根据需要进行编辑。
// Setup Datatable to hold the information
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {
new DataColumn("Number", typeof(int)),
new DataColumn("IP Address", typeof(string)),
new DataColumn("Ping", typeof(int)),
new DataColumn("GUID", typeof(string)),
new DataColumn("Name", typeof(string))
});
// Get info
string info = sendRConCommand("players");
// Split Rows
string[] infoRows = info.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
int start = 3; // ignore first 3 lines
while (start < infoRows.Length - 1) // Ignore last line
{
// Split row on spaces, and remove anything that is an empty space
string[] row = infoRows[start].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
DataRow dr = dt.NewRow();
dr["Number"] = int.Parse(row[0].ToString());
dr["IP Address"] = row[1].ToString();
dr["Ping"] = int.Parse(row[2].ToString());
dr["GUID"] = row[3].ToString();
int nameItem = 4;
while (nameItem < row.Length)
{ // Names can have spaces, so we need to merge
dr["Name"] += " " + row[nameItem].ToString();
nameItem++;
}
dr["Name"] = dr["Name"].ToString().Trim(); // Trim any leading spaces
dt.Rows.Add(dr);
start++;
}
// Job Done
mygridview.DataSource = dt;
mygridview
是您的网格。
我已将其全部放入数据表中,但自定义对象,列表等也可以使用。