Пользовательские элементы управления не могут быть добавлены "Не удалось загрузить элемент панели инструментов" C # winforms - PullRequest
0 голосов
/ 06 сентября 2018

При работе над приложением я решил добавить свой первый пользовательский элемент управления для этого проекта. Я делаю это очень хорошо, однако, когда я перетаскиваю его в основную форму из панели инструментов, появляется всплывающее сообщение об ошибке:

enter image description here

Неважно, что я делаю, похоже, это не исправить. Я попытался добавить его через код, однако он просто не будет отображаться вообще.

Изучив проблему в Интернете, я не смог найти работающего решения или, по крайней мере, решения, которому бы я мог следовать и понять.

Помощь будет очень признательна, и если понадобится дополнительная информация, я буду рад ее добавить. Однако в настоящее время я не знаю, что я мог бы добавить, что могло бы быть полезным.

Код для простого вируса-шутника (Нужно вдохновлять себя, чтобы продолжать учиться кодировать :)) Вот код ( Пожалуйста, не запускайте файл, это, в конце концов, вирус-шутка, единственный выход - 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);
            */
        }
    }
}

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Просто отладьте проект и попробуйте добавить форму управления пользователя

0 голосов
/ 07 сентября 2018

После долгих попыток найти ответы на другой пост ни один из них не сработал. Я нашел решение после открытия нового проекта и экспериментов с моим кодом.

Решение: Убедитесь, что пользовательский элемент управления и основные формы имеют одинаковые ссылки "с помощью"!

Извините, если это было само за себя, но я не знал, что вы должны были это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...