C# 消息框包含C中的表

C# 消息框包含C中的表,c#,.net,wpf,winforms,C#,.net,Wpf,Winforms,这将输出显示为字符串。但是我想要的是输出应该以表格的形式显示。在调用MessageBox.show时使用Name和age 如果我们可以突出显示消息框的内部,那么它也将非常棒 请提供帮助。在WPF中,您必须创建窗口 Xaml 您可以使用一个窗口,通过showdialg,使用按钮和datagrid,就像您想要的那样,使其成为一个消息框,并处理对话框结果 这是为WPF设计的 对于格式设置,可以使用窗口。 您可以在ctor中传递IEnumerable。 Window.ShowDialog是模态的 主持人

这将输出显示为字符串。但是我想要的是输出应该以表格的形式显示。在调用MessageBox.show时使用Name和age

如果我们可以突出显示消息框的内部,那么它也将非常棒


请提供帮助。

在WPF中,您必须创建窗口

Xaml


您可以使用一个窗口,通过showdialg,使用按钮和datagrid,就像您想要的那样,使其成为一个消息框,并处理对话框结果

这是为WPF设计的

对于格式设置,可以使用窗口。 您可以在ctor中传递IEnumerable。 Window.ShowDialog是模态的

主持人:问题有三个部分。 模态、传递数据和格式化。 另一个答案不涉及模式或向窗口传递数据。
我在创建传递和格式化示例时发布了

七张反对票,没有一条评论来帮助海报了解原因。所以应该比这更好。@JohnArlen含糊不清的多部分问题,有3个答案,OPI没有回应,他发现没有直接的方法可以让WPF中的自定义消息具有我在上述问题中提到的所有这些功能。这将需要创建一个类似于消息框的xaml。很抱歉回复太晚。在一些讨论中,我发现我们无法将此功能扩展到自定义消息框。但根据你的解释,我尝试了你的方法,效果很好。谢谢
IEnumerable<string> peopleWithInvalidAge =
                    (from age in User
                     where age < 0
                     select name ).Distinct();

MessageBox.show("The people who have invalid age are {0}" , string.Join(", ", peopleWithInvalidAge) )
<my:Datagrid x:Name="test" xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit" CanUserAddRows="True" ItemsSource="{Binding}" AutoGenerateColumns="False">  
    <my.DataGrid.Columns> 
        <my:DataGridTextColumn Header="Your Collection" Binding="{Binding}"/>  
    </my.DataGrid.Columns> 
</my:Datagrid> 
public Window()  
{  
    InitializeComponent();  

    test.DataContext = peopleWithInvalidAge ;  
}
Window1 win = new Window1(new List<string> { "john", "susan" });
win.ShowDialog();

public Window1(IEnumerable<string> names)
{
    Names = names;
    InitializeComponent();
}
public IEnumerable<string> Names { get; private set; }

<Window x:Class="ListViewUpdate.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        DataContext="{Binding RelativeSource={RelativeSource self}}"
        Title="Window1" Height="300" Width="300">
<Grid>
    <ListView ItemsSource="{Binding Path=Names}" />
</Grid>
</Window>