DevExpress中TileView的使用
1、前期准备VS2019、DevExpress19.2、MySql5.7、FreeSql3.2.808、.Net Farmework 4.8
2、创建本次示例中所需数据库及表
我这里建立的数据库为loldb,其下会使用到hero和country两个表
3、在VS2019进行代码实现
1、首先在vs2019中建立一个WinForm窗体,并取名TileViewDemo
2、窗体创建完成后引入我们本次会使用到的dll文件
Dev类目dll文件引用时需要我们在系统中确保已经安装了DevExpress19.2
FreeSql类目dll文件可以通过NuGet手动下载对应版本
3、为了美观,可设置为DevExpress窗体
4、回到设计界面,在工具箱中找到对应控件
找到GridControl控件拖拽至主界面中,并将该控件Dock设置为Fill。
转换view为TileView
5、点击Run Designer进行内容设计
添加column列表,并对一些特殊column进行设置
Views设置
Layout设置
Tile Template设置
6、创建数据库连接类
7、创建Domain
hero表
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using FreeSql.DataAnnotations;
namespace Domain {
public partial class hero {
public int N_Id { get; set; }
public int CountryId { get => _CountryId; set {
if (_CountryId == value) return;
_CountryId = value;
country = null;
} }
private int _CountryId;
public string ImgSrc { get; set; }
public string Name { get; set; }
public string NickName { get; set; }
public Sex Sex { get; set; }
#region 外键 => 导航属性,ManyToOne/OneToOne
public virtual country country { get; set; }
#endregion
#region 外键 => 导航属性,ManyToMany
#endregion
}
public enum Sex {
女,
男
}
}
8、关键代码
using Domain;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TileViewDemo
{
public partial class MainForm : DevExpress.XtraEditors.XtraForm
{
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
Global.Instance.ConnnectionServer(out string exMsg);
if (!string.IsNullOrEmpty(exMsg))
{
MessageBox.Show("数据库连接失败:" + exMsg);
return;
}
List<hero> heroes = Global.Instance.freeSql.Select<hero>().Include(a => a.country).ToList();
List<herodDto> heroDtos = new List<herodDto>();
foreach (var item in heroes)
{
herodDto herodDto = new herodDto()
{
Id = item.N_Id,
Photo = Image.FromFile(item.ImgSrc),
Name = item.Name,
NickName = item.NickName,
Sex = item.Sex,
CountryName = item.country.CountryName
};
heroDtos.Add(herodDto);
}
gc_DataList.DataSource = heroDtos;
}
/// <summary>
/// 定制每个卡片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tv_DataList_ItemCustomize(object sender, DevExpress.XtraGrid.Views.Tile.TileViewItemCustomizeEventArgs e)
{
if (e.Item == null || e.Item.Elements.Count == 0)
return;
int sex = (int)tv_DataList.GetRowCellValue(e.RowHandle, tv_DataList.Columns["Sex"]);
Color female = Color.LightBlue;
Color male = Color.DarkRed;
e.Item.Elements.Text = String.Empty;
if (sex == 1)
e.Item.Elements.Appearance.Normal.BackColor = female;
else
e.Item.Elements.Appearance.Normal.BackColor = male;
}
/// <summary>
/// 每个卡片的点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tv_DataList_ItemClick(object sender, DevExpress.XtraGrid.Views.Tile.TileViewItemClickEventArgs e)
{
herodDto herodDto = tv_DataList.GetRow(e.Item.RowHandle) as herodDto;
herodDto.IsSelect = !herodDto.IsSelect;
tv_DataList.RefreshRow(e.Item.RowHandle);
}
}
public class herodDto
{
public int Id { get; set; }
public Image Photo { get; set; }
public string Name { get; set; }
public string NickName { get; set; }
public Sex Sex { get; set; }
public string CountryName { get; set; }
public bool IsSelect { get; set; } = true;
}
}
9、实际显示
来源:https://www.cnblogs.com/icarec/Undeclared/17926092.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页:
[1]