gpt4 book ai didi

C# 通过插件向窗体添加控件

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:17 24 4
gpt4 key购买 nike

我正在开发插件系统。我正在尝试通过类/插件添加控件,但我得到的都是 stackoverflow 错误

using System;
using System.Windows.Forms;

namespace TGPT_Plugin_Class
{
public interface MPlugin
{
Form CurrentForm { get; set; }
}
}

插件:

    using System;
using TGPT_Plugin_Class;
using System.Windows.Forms;

namespace Plugin_For_TGPT
{
public class ControlAdder : MPlugin
{
Button b = new Button();
public ControlAdder ()
{
b.Location = new System.Drawing.Point(50, 50);
b.Text = "Plugin Button";
b.Size = new System.Drawing.Size(70, 30);
CurrentForm.Controls.Add(b);
}



public Form CurrentForm
{
get
{
return CurrentForm;
}
set
{
CurrentForm = value;
}
}
}
}

主要应用:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Reflection;
using TGPT_Plugin_Class;

namespace The_Great_Plugin_Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Assembly.LoadFrom(ofd.FileName);
foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (Type t in a.GetTypes())
{
if (t.GetInterface("MPlugin") != null)
{
try
{
MPlugin pluginclass = Activator.CreateInstance(t) as MPlugin;
pluginclass.CurrentForm = this;
return;
}
catch
{
}
}
}
}
}
}
}
}

有没有办法远程添加控制?或者无论如何制作更好的插件?

最佳答案

在 C# 项目中实现插件的可能性有很多:

1)这是一个说明基本技术的例子:

Plugin architecture using c#

2) 在 .NET 4 和 4.5 中你可以使用 MEF做大部分的管道。

3) 使用 .NET 3.5 你有 System.AddIn 但我认为它太复杂了(你可以看一个例子 here 如果你愿意的话)

关于C# 通过插件向窗体添加控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19198930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com