Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET:如何将windows窗体转换为windows控件_.net_Winforms_Visual Studio 2008 - Fatal编程技术网

.NET:如何将windows窗体转换为windows控件

.NET:如何将windows窗体转换为windows控件,.net,winforms,visual-studio-2008,.net,Winforms,Visual Studio 2008,我有一个.NET3.5Windows窗体,我想将它嵌入到另一个窗体中。有没有快速的方法将表单转换为控件 谢谢将表单更改为从UserControl而不是表单继承,然后修复任何编译错误。还有一种将表单嵌入控件的方法:以下是VB中的代码: Public Shared Sub ShowFormInControl(ByRef ctl As Control, ByRef frm As Form) If ctl IsNot Nothing AndAlso frm IsNot Nothing Then

我有一个.NET3.5Windows窗体,我想将它嵌入到另一个窗体中。有没有快速的方法将表单转换为控件


谢谢

将表单更改为从UserControl而不是表单继承,然后修复任何编译错误。

还有一种将表单嵌入控件的方法:以下是VB中的代码:

Public Shared Sub ShowFormInControl(ByRef ctl As Control, ByRef frm As Form)
    If ctl IsNot Nothing AndAlso frm IsNot Nothing Then
        frm.TopLevel = False
        frm.FormBorderStyle = FormBorderStyle.None
        frm.Dock = DockStyle.Fill
        frm.Visible = True
        ctl.Controls.Add(frm)
    End If
End Sub

我想我是从SO上的另一篇文章中获得这段代码的,但是我不记得在哪里了,如果这是您的代码片段,那么很抱歉

不是说你现在就应该这样做,但将来你可以看看。这是一个构建复合应用程序的框架(除其他外),听起来可能是您想要实现的目标。

我使用了@Neil Barnwell的解决方案,并添加了一项功能。 我手动编辑了.vbprog文件,并将表单的“子类型”更改为“用户控件”:

UserControl

这允许project explorer中的图标显示为用户控件,而不是表单。

我认为您必须更改一些内容才能使其在C#中工作,否则编译器会生气……我自己在解决同样的问题时发现了这个答案。太棒了,这是多么容易。我该如何在VB.NET中实现这一点?表单只是声明为
公共类时间表网格
,没有显式的
继承
。在Visual Studio 2012(至少)中,或者使用我尝试过的相对简单的表单,这样做可以生成可用的代码,但无法在VS设计器中打开控件。没有错误,但当您打开设计器时,它只会显示所有控件元素的列表,与文件对话框元素等类似。但是您看不到控件布局。如果有人知道如何解决这个问题,一定要告诉他!不管我怎么说,我没有看到控件和用户控件之间有巨大的区别!这个答案说的是UserControl,但我使用了Control,这就是我遇到问题的原因。@ProfK对于将来遇到这个问题的其他人,在VB.net中,inherits语句在设计器中
<SubType>UserControl</SubType>