无法添加用户控件“无法加载工具箱项”C#winforms
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法添加用户控件“无法加载工具箱项”C#winforms相关的知识,希望对你有一定的参考价值。
在处理应用程序时,我决定为该项目添加我的第一个用户控件。我做得很好,但是当我从工具箱中将其拖入我的主窗体时,会弹出一条错误消息:
无论我做什么,似乎都没有解决它。我试过通过代码添加它,但它根本就不会显示出来。
在线查看问题我无法找到可行的解决方案,或者至少没有我能够遵循和理解的解决方案。
真的很感激帮助,如果需要更多信息,我很乐意添加它。但是目前我不知道我可以添加什么可能有用。
代码是为了一个简单的恶作剧病毒(必须激励自己继续学习代码:))这是代码(请不要启动文件,毕竟它是一个恶作剧病毒,退出的唯一方法是alt + F4):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Simple_virus_V2
{
public partial class Form1 : Form
{
[DllImport("user32.dll")]
internal static extern IntPtr SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
internal static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
public Form1()
{
InitializeComponent();
timer1.Start();
timer2.Start();
Thread newthread = new Thread(progress);
newthread.Start();
}
Random rnd = new Random();
int noticewidth = 0;
bool changecursor = false;
private void progress() {
Thread.Sleep(1000);
changecursor = true;
Thread.Sleep(1000);
timer3.Start();
Thread.Sleep(5000);
noticewidth = Width;
}
int mouseflash = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (changecursor) {
if (mouseflash < 1000)
{
Bitmap cursor = new Bitmap(new Bitmap(pictureBox1.Image), 24, 24);
Cursor = new Cursor(cursor.GetHicon());
} else if (mouseflash < 1700) {
Bitmap cursor = new Bitmap(new Bitmap(pictureBox2.Image), 30, 30);
Cursor = new Cursor(cursor.GetHicon());
}
else {
mouseflash = 0;
}
mouseflash = mouseflash + rnd.Next(3,10);
}
header.Left = MousePosition.X - (header.Width / 2);
label2.Left = MousePosition.X - (label2.Width / 2);
label3.Left = label2.Left + 25;
panel1.Width = noticewidth;
this.Location = new Point(0,0);
panel1.Location = new Point(0, MousePosition.Y - 40);
this.WindowState = FormWindowState.Maximized;
TopMost = true;
Process currentProcess = Process.GetCurrentProcess();
IntPtr hWnd = currentProcess.MainWindowHandle;
if (hWnd != IntPtr.Zero)
{
SetForegroundWindow(hWnd);
ShowWindow(hWnd, int.Parse("9"));
}
Focus();
this.Width = Screen.PrimaryScreen.Bounds.Width * 3;
this.Height = Screen.PrimaryScreen.Bounds.Height * 2;
}
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
/*
using (Form1 frm = new Form1()) {
if (frm.ShowDialog() == DialogResult.OK) {
}
}
*/
}
private void timer2_Tick(object sender, EventArgs e)
{
PictureBox pic = new PictureBox();
pic.Width = 1;
pic.Height = 1;
pic.BackColor = Color.Black;
pic.Location = new Point(rnd.Next(0, this.Width), rnd.Next(0, this.Height));
this.Controls.Add(pic);
}
private void timer3_Tick(object sender, EventArgs e)
{
/*
bartry bars = new bartry();
bars.Location = new Point(0, rnd.Next(0, 500));
Controls.Add(bars);
timer3.Interval = rnd.Next(100, 5000);
*/
}
}
}
谢谢
答案
经过几年的尝试,在另一个帖子上的答案,他们都没有结束工作。在打开一个新项目并试验我的代码后,我确实找到了解决方案。
解决方案:确保用户控件和主窗体具有相同的“使用”引用!
对不起,如果这是自我解释,但我不知道你必须这样做。
另一答案
只需调试项目,然后尝试添加用户控件表单
以上是关于无法添加用户控件“无法加载工具箱项”C#winforms的主要内容,如果未能解决你的问题,请参考以下文章
通过C# WinForm控件创建的WPF WIndow窗口控件无法输入的问题