C#.Net 4.5 Winform
在我的表单上,我有一个SplitContainer,并在右侧面板中,我的自定义UserControl与TableLayoutPanel。
当我在TableLayoutPanel的每个单元格中绘制UserControl项目时,我想使用DrawString在当前单元格的分区和它上面的单元格上显示文本。
目前:
单元格的UserControls在TableLayoutPanel的每个单元格中作为“填充”停靠。
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
AutoScroll = false;
AutoSize = false;
Dock = DockStyle.Fill;
Margin = new Padding(0);
}
我将绘制矩形偏移到它的高度的一半:
var topOffset = ClientRectangle.Top - (ClientRectangle.Height / 2);
paintRect = new Rectangle(ClientRectangle.X + Padding.Left,
topOffset + Padding.Top,
ClientRectangle.Width - Padding.Left - Padding.Right,
ClientRectangle.Height - Padding.Top - Padding.Bottom);
我为图形创建了一个新的剪切区域,并打印出文本:
using (Graphics newGraphics = this.CreateGraphics())
{
newGraphics.SetClip(paintRect);
e.Graphics.SetClip(newGraphics);
e.Graphics.DrawString(
"ABCD 1234",
Font,
new SolidBrush(ForeColor),
paintRect, style);
}
需要显示文本的单元格UserControl(位于顶部,中途插入控件,以及TableLayoutPanel单元格,位于其上方。我认为我需要更改这些单元格的剪辑以不剪切文本,但不成功
如何在UserControl OnPaint中显示包含UserControl的TableLayoutPanel单元格所在的“图层”的“外部”或“顶部”文本?