c# - 使用 c# 和 TableLayoutPanel 创建时间线
问题描述
我正在尝试使用 tablelayoutpanel 创建时间线,我快到了。有两件事我似乎无法弄清楚。
- 首先,我想知道控件是否有任何方法可以跨越半列(单元格)?
- 然后我想知道如何在一个单元格中包含多个控件。
如果有人可以提供带有解释的示例代码,那就太好了。如果有任何不清楚的地方或者我需要发布更多代码,请告诉我。
到目前为止,这是我的代码:
public void Init(List<DateModel> dates)
{
Table.Controls.Clear();
Table.RowCount = 10;
for (int i = 1; i <= Table.RowCount; i++)
Table.RowStyles.Add(new RowStyle(SizeType.Percent, 10));
Table.ColumnCount = 38;
for (int i = 1; i <= Table.ColumnCount; i++)
Table.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
Table.Dock = DockStyle.Fill;
Controls.Add(Table);
SetUpGrid();
SetUp(dates);
}
public void SetUp(List<DateModel> dates)
{
var row = 1;
foreach (var date in dates)
{
AddEntry(date.Day, row, 0, 1, Color.White, Color.Black, false);
for (int i = 0; i < date.LogEntries.Count; i++)
try
{
AddEntry(string.Format("", row, GetColumnIndex(date.LogEntries[i].Start), GetColumnIndex(date.LogEntries[i].Stop) date.LogEntries[i].Start, date.LogEntries[i].Start - date.LogEntries[i].Stop, Color.White, Color.Black, false, date.LogEntries[i]);
}
catch (Exception)
{
Console.WriteLine();
}
row++;
}
}
private void AddEntry(string text, int row, int col, int columnSpan, Color foreColor, Color backColor,
bool border, LogEntry entry = null)
{
var lbl = new Label
{
Text = text,
AutoSize = false,
AutoEllipsis = true,
ForeColor = foreColor,
BackColor = backColor,
Dock = DockStyle.Fill,
BorderStyle = border ? BorderStyle.FixedSingle : BorderStyle.None,
TextAlign = ContentAlignment.MiddleLeft,
Tag = entry,
Cursor = Cursors.Hand
};
// Perhaps I need to check if a cell is empty?
lbl.Click += new EventHandler(EditEntry);
Table.Controls.Add(lbl, col, row);
Table.SetColumnSpan(lbl, columnSpan);
}
public void SetUpGrid()
{
AddEntry(string.Format("Today:"), 0, 0, 1, Color.White, Color.Black, false);
AddEntry("| 05:00", 0, 1, 2, Color.White, Color.Black, false);
// And so on.. All the way to 23:00
}
解决方案
推荐阅读
- javascript - 我在将数据从 javascript 发送到 python 烧瓶时遇到问题
- amazon-web-services - 查找触发 Lambda 函数的 SQS 名称
- cudd - Cudd_PrintMinterm,访问产品总和中的各个最小项
- mongodb - MongoDB 数组中的 $project
- vba - VBA - 从列表框中删除空项目
- javascript - 自从我开始学习 DOM 已经 2 周了。尝试制作语言切换器。不工作
- python - 如何将 tcp 套接字与 ftp 服务器连接
- assembly - 更改 IRQ8 ISR
- javascript - 如何过滤、搜索和排序 Django 前端记录?
- python - 使用熊猫重塑/堆叠2列?