问题标签 [initializecomponent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何防止设计视图使用默认构造函数?
情况:我正在制作一个可折叠面板。在我的业务情况下,我需要让小组支持以下内容:
“方向”(即,它将停靠在顶部、底部、左侧还是右侧)。这会改变它崩溃的方向以及其他一些事情。
一种“风格”。该产品有一些预定义的视觉样式(定义背景颜色、渐变与否、文本颜色、悬停颜色等)。
问题是:某些风格与某些方向不兼容。以下是要求:
如果他/她将面板编码为具有不兼容的样式和方向,则需要某种方法来防止/警告程序员。例如,如果面板不兼容,则让面板抛出运行时异常将满足此要求。
不允许任何人在运行时动态更改样式或方向。如果需要,我可以允许它在 中“动态”更改
InitializeComponent
,但不能在其他任何地方更改。该面板需要在设计视图中可见。但不一定能够在设计视图中拖放,从技术上讲,我什至不需要在设计视图中更改面板的属性。尽管如果可能的话,我显然想要其他任何东西。
一种可能的解决方案:让构造函数接受两个输入:方向和样式。这样,这两个更改都被视为原子操作。如果它们不是同时改变,那么在改变方向/样式和改变另一个之间,面板将处于不一致的状态。我想避免这种情况。
如何让设计视图不使用默认构造函数和/或满足要求的更好做法?
笔记
小组只是提出更广泛问题的示例和用例。我希望这篇文章能够回答有关让设计视图处理我的要求的最佳实践的直接问题。如果 Visual Studio 支持在 中注入非默认构造函数InitializeComponent
,那么我想知道如何(以及任何警告)。如果有更好的做法可以满足列出的要求,那么我也想知道。
vb.net - InitializeComponent() 错误帮助
我是 Visual Studio 2005 和 VB 编码的初学者程序员,我需要一些帮助。
每次调用 InitializeComponent() 时,我都会遇到此错误:
ComException 未处理类未注册(来自 HRESULT 的异常:0x80040154 (REGDB_E_CLASSNOTREG))
这是什么意思 ??我该怎么走?
谢谢你。
c# - 自动优化 Windows 窗体 InitializeComponent 的性能
我有一个带有完整 GUI 的程序,由于InitializeComponent()
. 经过一些研究,似乎有一些技术可以缩短 .NET 遍历该InitializeComponent
部分所需的时间。这些包括:
1:使用 NGen 或类似的。
2:使用多线程,如Speed-optimise Windows Forms 应用程序所示
3:其他技术,例如在添加控件属性之前设置它们,如优化 InitializeComponent 所示(需要 1 秒!)。
不幸的是,(1) 仅将我的案例改进了大约 20%,并且 (2) 和 (3) 实施起来很耗时,并且牺牲了完整 GUI 设计器的便利性。
是否有任何自动化解决方案可以直接获取源代码,并生成更短、更高效的InitializeComponent()
.
c# - InitializeComponent() 中的应用程序崩溃
首先,我使用 Visual Studio 2010、Measurement Studio 2010 插件、C# 和 .NET 4.0。
我的应用程序从 USB 设备接收数据并使用WaveformPlot()
[这是 Measurement Studio 的一部分] 绘制数据。我能够在调试和发布模式下正常运行应用程序,甚至可以bin
在开发计算机上使用文件夹中的 EXE 文件直接运行它。
但是,我根本无法在另一台计算机上运行它。我正在使用ClickOnce创建安装文件和文件夹,并将发布文件夹从我的开发计算机复制到客户端计算机。然后我运行安装文件,ClickOnce 下载 .NET(如果尚未安装),然后打开应用程序。该应用程序显示我的初始对话框,要求我从许多可用的 COM 端口中选择一个。一旦我这样做了,我的代码就会经历InitializeComponent()
主窗体应该出现的地方。
初始框后主窗体未打开。使用Debug.WriteLine
语句,我已经能够将其范围缩小到
它在这里崩溃。它没有向我显示任何错误消息或任何东西。它在我的开发计算机上运行良好,但在其他计算机上却不行。我包含了National Instruments DLL 文件,并且其他 National Instruments 组件都已初始化。只是这一个没有。该应用程序会在 Windows 任务管理器中显示一段时间,然后在 10 秒后消失。
我应该怎么办?
更新 1
在阅读了关于 Stack Overflow 的另一个不相关的问题后,我意识到我可以将 theApplication.run
和 theform1 mainform = new form1()
放在一个 try-catch 块中。
System.TypeInitializationException:“NationalInstruments.UI.Internal.WaveformPlotElement”的类型初始化程序抛出异常。--> System.IO.FileNotFoundException:无法加载文件或程序集“NationalInstruments.Common.Native.dll”或其依赖项之一。指定的模块无法找到。
因为我现在至少知道这是一个例外,所以我会处理它,尝试找出缺少哪个 DLL 以及为什么,并更新这个问题。
更新 2
我检查了发布文件夹中的应用程序文件,它确实包含“NationalInstruments.Common.Native.dll”。我不知道为什么它不能加载它。
更新 3
我在客户端计算机上运行 Fusion Log Viewer 并看到NationalInstruments.Common.Native.dll
已成功加载。但是,调试异常消息仍然显示,如 OP 所示,
无法加载文件或程序集“NationalInstruments.Common.Native.dll”或其依赖项之一”
Fuslog Viewer 显示所有程序集都已成功加载。我在客户端计算机上进行了检查。虽然,National Instruments DLL 文件中有一行显示“GAC 查找不成功”,而其他程序集则没有。
DebugViewer 显示我使用打印出来的异常Debug.writeLine
。这表明NationalInstruments.Common.Native.dll
无法加载其依赖项或其中一个依赖项。
我很困扰。
我尝试添加对项目的引用,使用反编译器检查引用,使用其他安装程序(ClickOnce 除外),但它们似乎都没有让我到任何地方。:(
更新 4
我昨天才发现该应用程序在 64 位系统上安装和运行良好。我之前试过的两台电脑都是 32 位的 Windows 7 系统。我正在寻找是否可以以某种方式帮助我。该应用程序是在我的 64 位 Windows 7 开发笔记本电脑上编译的。项目属性下“构建”中的“平台”下拉菜单显示“活动(x86)”,我将“任何 CPU”作为平台目标。
winforms - VS2010 Winform 设计器修改不错的代码
我遇到了 WinForm 设计器的问题。我制作了一个新的 UserControl,我添加了一个 DataGridView、一些其他元素和一个 TreeView。我使用 gui 命名了所有这些新组件。现在是编写代码的时候了,我意识到设计器错误地命名了我的 TreeView 节点。即使将 AutoGenerateColumn 设置为 false,设计器也会从我的 DataSource 添加新列。我虽然:“是时候再次清理一些设计师废话了......”我在 InitializeComponent 函数中清理了那些东西(我知道它被标记为“不要用代码编辑器修改”但是......我有选择吗?
无论如何,我的问题是:当我回到设计视图时,VS 设计器似乎重新生成了代码,但甚至没有重新生成代码。现在设计器将我的 DataGridView 和 TreeView 声明为 InitializeComponent 函数的本地成员。我可以轻松地修复和撤消我的更改,但我想了解并知道是否有办法禁用设计器的自动代码生成。
另外,我尝试制作另一个具有我需要的所有功能的功能,这样设计人员就不会把它搞砸并将其调用到初始化组件中。此解决方案在运行时有效,但不适用于设计视图。我有点低
c# - Form 的 resx 文件包含 Point/Size 和其他奇怪的 UI 对象
出于某种原因,我们的一个表单从其对应的 resx 文件中读取所有 UI 元素数据。我们希望所有数据都在代码中显式分配。
例如,我们的 resx 文件包含表单按钮的位置:
名称:radioButton1.Location
类型:System.Drawing.Point
值:7;68
在InitializeComponent
中,然后由ApplyResources函数加载数据:
对于这个项目,这是不必要的。我们希望分配 UI 数据而不读取一些臃肿的资源文件!
问:这种资源绑定是如何发生的,我们如何将其恢复为标准行为?
c# - 如何自定义 InitializeComponent 的代码生成?更具体地说,如何对所有生成的代码进行后处理?
我正在尝试为InitializeComponent
. MSDN 文章“在 .NET Framework 可视化设计器中自定义代码生成”包含“控制代码生成”部分,它解释了如何完成此操作的基础知识。
我密切关注上述文章中的一个示例:
现在我将它连接到我的表单SomeForm
:
然后,表单设计器可能会生成以下InitializeComponent
代码:
请注意,注释// CODEDOM WAS HERE
不是作为第一行添加的InitializeComponent
,而只是作为处理表单对象本身属性的代码块的第一行。
如果我希望能够修改生成的整个方法的 CodeDOM,而不仅仅是处理特定对象的部分,我该怎么办?
背景:我为什么要这样做?在 Windows 窗体中,如果想要在数据绑定过程中进行灵活的值转换,通常不得不求助于订阅某个特定对象的
Format
和Parse
事件。Binding
所以我正在创建一个专门Binding
的子类(我们称之为它ConvertingBinding
)来稍微简化这个过程。现在,问题是当在 Windows 窗体设计器中设置数据绑定时,生成的代码会创建
Binding
; 但是,我希望设计器改为实例化我的专门子类。我目前的方法是让设计人员首先创建一个 CodeDOM 树,然后遍历该树并将所有实例替换Binding
为ConvertingBinding
.
.net - 为什么 InitializeComponent 是公开的
我的 WPF 用户控件的公共接口包含自动生成的 InitializeComponent 方法(包含在部分类中)。这对我来说是一个惊喜,因为我期望这样一个内部的东西是私人的。
有什么方法可以从用户控件公共界面中删除 InitializeComponent 吗?
wpf - 通用 UserControls 和通用 Dependency 属性是否可能?
我有一个抽象的泛型类,它定义了一个泛型依赖属性,其类型将由子类定义。此属性不知何故未被识别为依赖属性,因此在绑定到此属性时,我在运行时收到错误消息。此外,在编译期间,构造函数不能调用InitializeComponent
. 这是为什么?
通用抽象类MyClass
:
对应的 XAML:
一个具体的子类MySubClass
:
对应的 XAML:
PS 我也不太确定这些partial
东西是否正确完成 - R# 建议删除这些关键字。
c# - 将构造函数参数传递给在 InitializeComponent 中创建的控件
InitializeComponent
在表单上设置组件,但是对于我创建的用户控件,它调用默认构造函数,但我想在用户控件上调用我自己的构造函数(带参数)。样板代码说不要编辑内容,那么最好的方法是什么?