BSERP WEBPOS小票设计器中控件如何设置自动换行。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BSERP WEBPOS小票设计器中控件如何设置自动换行。相关的知识,希望对你有一定的参考价值。

BSERP WEBPOS小票设计器中控件如何设置自动换行。选中控件后在属性区别中设置wordwrap为true即可。

参考技术A 有同感遇到过这样的问题,好像是百胜软件公司的一个技术帮我处理的,终于在这看到方法了。

如何在 winforms 设计器中访问继承的控件

【中文标题】如何在 winforms 设计器中访问继承的控件【英文标题】:How to access inherited controls in the winforms designer 【发布时间】:2010-11-05 23:44:41 【问题描述】:

我正在制作一些控件,它们都必须具有相同的外观和一些共同的行为,尽管它们适用于不同类型的输入。所以我做了一个继承自UserControl的BaseClass,我所有的控件都继承自BaseClass。

但是,如果我在设计器中为 BaseClass 添加控件,例如 TableLayoutPanel,我在设计继承的类时无法访问它们。我看到了 TableLayoutPanel,但即使他受到“保护”,我也无法通过设计器对其进行修改或将控件放入其中。我可以通过代码访问它,但我不想失去使用设计器的能力。

现在,我只是从 BaseClass 中删除了所有控件,在每个继承的类中添加了布局和所有公共控件,然后在 BaseClass 中使用引用来操作它们。但这根本不能满足我。有没有办法让设计器使用继承的受保护成员控件?

环境:C#、.NET 3.5、Visual Studio 2008

编辑回答 SLaks 的建议。我尝试设置一个属性,虽然我不习惯使用它们,但它似乎不起作用。这是我尝试过的代码:

    public partial class UserControl1 : UserControl
    
            public UserControl1()
            
                    InitializeComponent();
            

            public TableLayoutPanel TableLayoutPanel1
            
                    get  return tableLayoutPanel1;
                    set  tableLayoutPanel1 = value;
            
    

    public partial class UserControl2 : UserControl1
    
            public UserControl2()
            
                    InitializeComponent();
            
    

【问题讨论】:

你能继承 TableLayoutPanel 本身吗? 当然,您始终可以创建自己的控件,继承自 winforms 控件。我这样做是为了实现一些控制。但这不是我想要在这里实现的。我试图拥有一个内部包含几个基本控件的控件:一个 tablelayoutpanel,其中包含一些控件(例如标签),以及继承类应该用他们选择的控件填充的几个空白空间。最终目标是将所有这些控件添加到工具箱中,然后将它们拖放到设计器中,以创建具有许多控件但这些控件具有共同行为/布局的表单。 顺便说一句,从 Winform 控件继承会削减设计器,因为通常,重点只是实现特定行为,而不是自己重新设计控件。 【参考方案1】:

当您尝试使用设计器从继承的控件访问基本控件中声明的 TableLayoutPanel 时,您正在使用 WinForms 中称为“Visual Inheritance”的功能。

不幸的是 TableLayoutPanel 不支持视觉继承: http://msdn.microsoft.com/en-us/library/ms171689%28VS.80%29.aspx

这就是 TableLayoutPanel 在继承控件中显示为阻塞的原因。

【讨论】:

我直接遇到了这个问题。 FTA:“谨慎使用 TableLayoutPanel 控件。” 是的,这看起来像是一条死胡同。我能够找到 tablelayout 和设计器的大部分 C# 源代码,但看起来我永远找不到与此控件关联的 FlowPanelDesigner.uex 文件【参考方案2】:

尝试将此属性添加到面板的定义中(这可能有帮助,也可能没有帮助):

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]

【讨论】:

尝试将字段设为私有,并将该属性添加到公开它的公共属性中。 SplitContainer 就是这样做的【参考方案3】:

您必须自行设计基本控件。成功重建控件项目后,更改会反映在设计器中。如果您将成员设为公开,您可以对其进行编辑,但更改不会保留。

【讨论】:

在基类中设置 TableLayoutPanel 的行、列和大小是我想做的。但是如果我在设计派生类时不能在布局中添加控件,那是没有意义的。例如在我的表格布局中有一个空白单元格,然后通过设计器在该单元格的每个派生类中添加不同的控件。 在设计派生控件时不能修改基本控件。反正不容易。如果您将“空白空间”设为公开(例如 EmptyPanel1、EmptyPanel2、...),然后为它们提供您自己的 TypeEditor,您至少可以允许它们直观地设置控件。不过,创建类型编辑器需要一些工作。【参考方案4】:

尝试为您的控件创建ParentControlDesigner,覆盖InternalControlDesigner,并返回(designerHost.GetDesigner(tableLayoutPanel) as ControlDesigner)designerHost(IDesignerHost) component.Site.GetService(typeof(IDesignerHost))

【讨论】:

【参考方案5】:

我隐约记得通过将基类放在自己的 DLL 中并首先构建它来解决类似的问题。我翻遍了,但找不到项目。对不起。

【讨论】:

以上是关于BSERP WEBPOS小票设计器中控件如何设置自动换行。的主要内容,如果未能解决你的问题,请参考以下文章

如何在VS2010 WPF设计器中控制自定义控件的默认属性

如何停止 Visual Studio 为设计器中的控件生成属性设置?

如何在 Qt 设计器中使控件自动调整大小?

Delphi 10 Seattle 小票打印控件TQ_Printer

vs2012,如图,下列控件已经添加到工具箱,但未在活动设计器中启用,请问如何解决?

.net WinForm用户控件开发:用户控件的基本属性设置