自定义控件的集合的属性页面自定义

xfy_ 2018-04-19 05:06:04
受启发于 https://bbs.csdn.net/topics/390409024 写了一个自定义控件的属性,


private List<BsItem> items = new List<BsItem>();
[TypeConverter(typeof(System.ComponentModel.CollectionConverter))]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Category("外观"), Description("图像文件集")]
public List<BsItem> ImageList
{
get { return items; }
}

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (items.Count > 0)
{
Graphics g = e.Graphics;
if (items[0].SelectImage != null)
g.DrawImage(items[0].SelectImage, new Point(0, 0));
}
}

//------------------------------------------------------------

public class BsItem : Component
{
private Image _imageItem;
[Description("选中图片"), Category("外观")]
public Image SelectImage { get { return _imageItem; } }

private string _ImageName;
[Description("图片路径"), Category("外观")]
public string ImageName
{
get { return _ImageName; }
set
{
_ImageName = value;
this._imageItem = Image.FromFile(_ImageName);
_ImageName = System.IO.Path.GetFileName(_ImageName);
Name = _ImageName;
}
}
[Browsable(false)]
public string Name { get; set; }
}


在控件属性上显示这一属性:

点击之后显示:
我想问下:
一、 红框里面的按钮是否可以实现 人为控制
二、当该属性内部有值的时候,我在重绘里面 进行绘图,但是我设置完值,ImageList只读属性,点击确认之后没有触发 画面重绘, 这种情况如何触发重绘事件?
求大神指教
...全文
1002 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xfy_ 2018-04-23
  • 打赏
  • 举报
回复
引用 4 楼 wooddy1982 的回复:
二、当该属性内部有值的时候,我在重绘里面 进行绘图,但是我设置完值,ImageList只读属性,点击确认之后没有触发 画面重绘, 这种情况如何触发重绘事件?

你是要重绘这个区域么??


很抱歉这么久才回你, 我代码定义的list类型的属性, 当点击确认按钮以后,希望可以触发到刷新(Onpaint()方法)
wooddy1982 2018-04-21
  • 打赏
  • 举报
回复
引用 3 楼 HonSinsin 的回复:
[quote=引用 2 楼 wooddy1982 的回复:]
给你说个思路。你应该自定义一个属性窗口。这样,你就可以随心所欲实现你想要的效果了。虽然我没有弄过,但我记得这个应该可以实现。

我自定义个窗口 是这样设计的

但是上下 2条 item调换还没有想好,以及点击item 右边属性里面显示对应item 的属性也没搞好[/quote]


一、 红框里面的按钮是否可以实现 人为控制,
答:窗口是自己实现的,按钮也是自己拖上去的。事件就应该可以自己实现吧!!!动手试试,你就知道了!
二、当该属性内部有值的时候,我在重绘里面 进行绘图,但是我设置完值,ImageList只读属性,点击确认之后没有触发 画面重绘, 这种情况如何触发重绘事件?

你是要重绘这个区域么??
xfy_ 2018-04-20
  • 打赏
  • 举报
回复
引用 2 楼 wooddy1982 的回复:
给你说个思路。你应该自定义一个属性窗口。这样,你就可以随心所欲实现你想要的效果了。虽然我没有弄过,但我记得这个应该可以实现。

我自定义个窗口 是这样设计的

但是上下 2条 item调换还没有想好,以及点击item 右边属性里面显示对应item 的属性也没搞好
wooddy1982 2018-04-20
  • 打赏
  • 举报
回复
给你说个思路。你应该自定义一个属性窗口。这样,你就可以随心所欲实现你想要的效果了。虽然我没有弄过,但我记得这个应该可以实现。
xfy_ 2018-04-20
  • 打赏
  • 举报
回复

110,538

社区成员

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

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

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