如何自动修改设计时属性GridSize

任叔 2005-03-24 01:51:26
我做了一个自定义窗口类:
public class MyForm : System.Windows.Forms.Form
{
...
}

而其它窗口都从MyForm继承,如:
public class Form1 : MyForm
{
...
}
我将MyForm的GridSize属性改为4,4
我希望其它窗口在设计时,声明为从MyForm继承后都能自动改变设计时属性GridSize。

请问应该怎么修改MyForm?
...全文
133 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
任叔 2005-03-30
  • 打赏
  • 举报
回复
或者还有没有别的办法?
photoboy 2005-03-29
  • 打赏
  • 举报
回复
GridSize属性并不是由Form Class所提供的
而是由Form的Designer所提供的
//所以你要先取得Designer
IRootDesigner rootDesigner = (IRootDesigner)host.GetDesigner(host.RootComponent);
//再取得该Designer的Type,由InvokeMember直接呼叫做修改
Type t = rootDesigner.GetType();
t.InvokeMember("GridSize", BindingFlags.NonPublic|BindingFlags.SetProperty|BindingFlags.Instance|BindingFlags.FlattenHierarchy, null, rootDesigner, new object[]{new Size(4,4)});

ps.host是实作IDesignerHost的执行个体
任叔 2005-03-29
  • 打赏
  • 举报
回复
多谢!
其他人知道怎么获取Designer对象吗?
photoboy 2005-03-29
  • 打赏
  • 举报
回复
关键在Designer,我目前只知道透过host取得Form的Designer,
或是自己做一个给你的MyForm用的Designer(自订设计工具),这两种方法,
Designer是提供你这个对象在设计阶段的支援,你可以朝这方向找答案,
或许有不用host就可取得某对象的Designer的方法!
任叔 2005-03-29
  • 打赏
  • 举报
回复
我要做的应该是你说的第二种情况,那我如何绕开host呢?
photoboy 2005-03-29
  • 打赏
  • 举报
回复
GridSize属性是在Design-time才有的,Run-time时是不能修改的
说的白一点有三种情形才可以改这个属性,
其一就是你只直接在VS.Net的IDE开发环境的属性浏览器中
做修改
其二你若是做一个要给别人使用的对象,那你除了要继承Form外
可能还要另外做一个继承DocumentDesigner的类, 这个我还没试出来
其三你若是做一个像VS.Net的IDE开发工具,就要做一个host
来管理一些设计阶段的Services、Components、Designers,
详细请参考http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconnetframeworkdesign-timearchitecture.asp
或是SharpDevelop里的FormDesigner
任叔 2005-03-29
  • 打赏
  • 举报
回复
那里边的base.Site是null,没有执行后面的语句,是否需要对开发环境进行什么配置?
Jim3 2005-03-29
  • 打赏
  • 举报
回复
下面这个帮助也许有用
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemcomponentmodeldesignidesigneroptionserviceclasstopic.htm
任叔 2005-03-29
  • 打赏
  • 举报
回复
photoboy,我还是没明白host是什么?

我的窗体声明如下:
public class MyFormRoot : System.Windows.Forms.Form
是否应在构造函数里加入你上边的代码?但host无法解析?请问该怎么写?
public Form():base()
{
InitializeComponent();
//你的代码?
}
corbet 2005-03-27
  • 打赏
  • 举报
回复
顶回去!
任叔 2005-03-25
  • 打赏
  • 举报
回复
用什么方法可以引用GridSize属性?
任叔 2005-03-24
  • 打赏
  • 举报
回复
this.GridSize是编译不过去的
任叔 2005-03-24
  • 打赏
  • 举报
回复
或者能告诉我如何用代码修改设计时属性也可以

110,532

社区成员

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

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

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