请教自定义控件的问题

leon51 2019-08-12 09:49:11
想制作一个自定义控件,我现在是用多个.net本身的控件,比较麻烦。自定义控件包含一个button,一个Lable,一个Line,两个panel(pnlTitle和pnlContent),
功能很简单:点击按钮时,隐藏或显示下方的pnlContent,自定义控件整体高度随之调整


我用以下代码无法添加直线,请问要怎么修改?
public CollapsiblePanel()
{
InitializeComponent();
this.Paint += CollapsiblePanel_Paint;
}

private void CollapsiblePanel_Paint(object sender, PaintEventArgs e)
{
base.OnPaint(e);
Graphics graphics = this.CreateGraphics();
Pen pen = new Pen(Color.Red, 2);
Point startPoint = new Point(10, 10);
Point endPoint = new Point(50, 10);
graphics.DrawLine(pen, startPoint, endPoint);
pen.Dispose();
graphics.Dispose();
}


单击按钮时隐藏或显示pnlContent,控件高度相应调整,但下面代码高度无法恢复
private void btnCollapse_Click(object sender, EventArgs e)
{
if (btnCollapse.Text == "+")
{
btnCollapse.Text = "-";
pnlContent.Visible = true;
this.Height += pnlContent.Height;//此处应该如何修改?
}
else if (btnCollapse.Text == "-")
{
btnCollapse.Text = "+";
pnlContent.Visible = false;
this.Height -= pnlContent.Height;
}
}

...全文
202 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
leon51 2019-08-13
  • 打赏
  • 举报
回复
引用 1 楼 stherix 的回复:
Microsoft.VisualBasic.PowerPacks 里 有一个可以当直线用的控件 LineShape
我一直都是按上面画的,只是以前是单独用
stherix 2019-08-13
  • 打赏
  • 举报
回复
Microsoft.VisualBasic.PowerPacks 里 有一个可以当直线用的控件 LineShape
weixin_42694355 2019-08-13
  • 打赏
  • 举报
回复
XBodhi. 2019-08-13
  • 打赏
  • 举报
回复
不过 .NET里有 可以拖动高度的 panel
XBodhi. 2019-08-13
  • 打赏
  • 举报
回复
你需要画线的同时绑定数据的事件,然后每次移动后重绘。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧