gpt4 book ai didi

c# - 在 DataGridView 中隐藏类的某些属性

转载 作者:行者123 更新时间:2023-11-30 20:36:58 26 4
gpt4 key购买 nike

我知道之前有人问过类似的问题,但我的问题有点不同。我尝试了大多数之前建议的解决方案,但没有一个奏效。

所以问题是我有两个类,如图所示:

public class Dog
{
public String Name { get; set; }
public int Age{ get; set; }
}
public class Person
{
public String First_Name { get; set; }
public String Last_Name { get; set; }
public Dog dog { get;set;}
}

此外,我还有一个人员列表 List < Person > 我正在 datagridview 中显示。问题是当我显示它们时,我得到类似的东西

enter image description here

但我需要的是:

enter image description here

我设法修复它的唯一方法是在 To_String 方法中只返回狗的名字,但这对我不起作用,因为我需要返回名字和狗的年龄。

我希望你能理解我并能帮助我。

最佳答案

我对当前建议的(甚至是赞成的)答案感到惊讶,该答案建议创建另一个列表只是为了更改值的显示表示。

您要问的是格式化,每个 UI 框架/组件都支持它。请参阅我对 changing the value of a cell in gridview at runtime 的回答更多细节。

您只需要处理 CellFormatting事件并在处理程序中放入如下内容:

var dog = e.Value as Dog;
if (dog != null)
{
// Display whatever you like
e.Value = dog.Name;
e.FormattingApplied = true;
}

完整示例:

using System;
using System.Windows.Forms;

namespace Samples
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var form = new Form();
var dg = new DataGridView { Dock = DockStyle.Fill, Parent = form };
dg.CellFormatting += (sender, e) =>
{
var dog = e.Value as Dog;
if (dog != null) { e.Value = dog.Name; e.FormattingApplied = true; }
};
dg.DataSource = new[]
{
new Person { First_Name = "Ben", Last_Name = "Harison", dog = new Dog { Name = "Billy", Age = 50} },
new Person { First_Name = "Rob", Last_Name = "Jonson", dog = new Dog { Name = "Puppy", Age = 25} },
};
Application.Run(form);
}
}

public class Dog
{
public String Name { get; set; }
public int Age { get; set; }
}
public class Person
{
public String First_Name { get; set; }
public String Last_Name { get; set; }
public Dog dog { get; set; }
}
}

结果:

enter image description here

关于c# - 在 DataGridView 中隐藏类的某些属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36549062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com