基本字符串格式化c#
Basic string formatting c#
我正在制作一个简单的 windows 表单应用程序。在我的列表视图中,我想显示三件事;日期、时间和说明。我现在是这样做的:
task = date + time + description;
(任务、日期、时间、描述均为字符串)
给出结果:
但我想要的是让这些字符串显示在不同类别的下方,如下所示:
如何将 3 个字符串(日期、时间、说明)格式化为一个(任务)以便它们显示为图二?
用 +
连接项目只会执行正常的字符串连接,这就是为什么您将所有内容都集中在一起的原因。
要执行您要求的操作,您必须在构造函数中指定字符串数组的位置添加一个新的 ListViewItem
。每个数组元素代表 ListView
中的一列:{column 1, column 2, column 3, etc...}
例如:
ListView1.Items.Add(new ListViewItem(new string[] {date, time, description}));
ListViewItem(string[])
构造函数的 MSDN 文档: https://msdn.microsoft.com/en-us/library/faw83h4f(v=vs.110).aspx
您需要从 ListView 属性中设置 View:Details
以获得网格样式的外观。当您创建一个 ListItem 时,它被视为第一列的数据,随后的 SubItem 被视为该特定 ListItem 的额外列。试试这个例子。
ListViewItem lvi;
for (int i = 0; i < 10; i++)
{
lvi = new ListViewItem();
lvi.Text = "first column";
lvi.SubItems.Add("second column");
lvi.SubItems.Add("third column");
listView1.Items.Add(lvi);
}
这里有一些扩展示例供您参考。
虽然您可能会找到一种方法来连接字符串,然后 space 通过在列表视图以外的其他内容中正确显示它们,列表视图将是您的最佳选择。
您的代码类似于:
public partial class MainWindow : Window
{
//Your data
private string date = "2016-04-04";
private string time = "20:20";
private string description = "poop";
//Declare a list
public List<object> myList { get; set; }
public MainWindow()
{
InitializeComponent();
DataContext = this;
//Instantiate your list
myList = new List<object>();
//Make a new object
var listObject = new
{
newDate = date,
newTime = time,
newDescription = description
};
//Add that object to your list
myList.Add(listObject);
}
}
和你的 XAML 来显示你的结果:
<Window x:Class="WpfApplicationTestApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListView x:Name="listView" ItemsSource="{Binding myList}">
<ListView.View>
<GridView>
<GridViewColumn Header="Date" DisplayMemberBinding="{Binding newDate}"/>
<GridViewColumn Header="Time" DisplayMemberBinding="{Binding newTime}"/>
<GridViewColumn Header="Description" DisplayMemberBinding="{Binding newDescription}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
我正在制作一个简单的 windows 表单应用程序。在我的列表视图中,我想显示三件事;日期、时间和说明。我现在是这样做的:
task = date + time + description;
(任务、日期、时间、描述均为字符串)
给出结果:
但我想要的是让这些字符串显示在不同类别的下方,如下所示:
如何将 3 个字符串(日期、时间、说明)格式化为一个(任务)以便它们显示为图二?
用 +
连接项目只会执行正常的字符串连接,这就是为什么您将所有内容都集中在一起的原因。
要执行您要求的操作,您必须在构造函数中指定字符串数组的位置添加一个新的 ListViewItem
。每个数组元素代表 ListView
中的一列:{column 1, column 2, column 3, etc...}
例如:
ListView1.Items.Add(new ListViewItem(new string[] {date, time, description}));
ListViewItem(string[])
构造函数的 MSDN 文档: https://msdn.microsoft.com/en-us/library/faw83h4f(v=vs.110).aspx
您需要从 ListView 属性中设置 View:Details
以获得网格样式的外观。当您创建一个 ListItem 时,它被视为第一列的数据,随后的 SubItem 被视为该特定 ListItem 的额外列。试试这个例子。
ListViewItem lvi;
for (int i = 0; i < 10; i++)
{
lvi = new ListViewItem();
lvi.Text = "first column";
lvi.SubItems.Add("second column");
lvi.SubItems.Add("third column");
listView1.Items.Add(lvi);
}
这里有一些扩展示例供您参考。
虽然您可能会找到一种方法来连接字符串,然后 space 通过在列表视图以外的其他内容中正确显示它们,列表视图将是您的最佳选择。
您的代码类似于:
public partial class MainWindow : Window
{
//Your data
private string date = "2016-04-04";
private string time = "20:20";
private string description = "poop";
//Declare a list
public List<object> myList { get; set; }
public MainWindow()
{
InitializeComponent();
DataContext = this;
//Instantiate your list
myList = new List<object>();
//Make a new object
var listObject = new
{
newDate = date,
newTime = time,
newDescription = description
};
//Add that object to your list
myList.Add(listObject);
}
}
和你的 XAML 来显示你的结果:
<Window x:Class="WpfApplicationTestApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListView x:Name="listView" ItemsSource="{Binding myList}">
<ListView.View>
<GridView>
<GridViewColumn Header="Date" DisplayMemberBinding="{Binding newDate}"/>
<GridViewColumn Header="Time" DisplayMemberBinding="{Binding newTime}"/>
<GridViewColumn Header="Description" DisplayMemberBinding="{Binding newDescription}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>