Ich verwende es für einen anderen Zweck. Mein Ziel ist es, der Bildbox mehrere Benutzersteuerelemente hinzuzufügen. Wenn der Benutzer auf eine beliebige Person klickt, werden die Benutzersteuerelementeigenschaften wie Name, Bildpfad, Größe und mehr angezeigt.
Der vollständige Code ist unten angegeben. Ich frage mich, ob nur das Ereignis Resize funktioniert.
Code: Select all
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualBasic;
public class userControlAddImage : UserControl
{
// Constructor to set some default properties
public userControlAddImage()
{
this.BackgroundImage = Image.FromFile(@"D:\UserImportant\Desktop\New folder (8)\29927.jpg");
this.BackgroundImageLayout = ImageLayout.Zoom;
this.BorderStyle = BorderStyle.FixedSingle;
}
private void userControlAddImage_Click(object sender, EventArgs e)
{
MessageBox.Show("User Control clicked!");
}
private void userControlAddImage_DoubleClick(object sender, EventArgs e)
{
MessageBox.Show("User Control userControlAddImage_DoubleClick!");
}
private void userControlAddImage_Enter(object sender, EventArgs e)
{
MessageBox.Show("User Control userControlAddImage_Enter!");
}
private void userControlAddImage_MouseEnter(object sender, EventArgs e)
{
MessageBox.Show("User Control userControlAddImage_MouseEnter!");
}
private void userControlAddImage_Resize(object sender, EventArgs e)
{
MessageBox.Show("User Control userControlAddImage_Resize!");
}
const int WM_NCHITTEST = 0x84;
const int WM_SETCURSOR = 0x20;
const int WM_NCLBUTTONDBLCLK = 0xA3;
protected override void WndProc(ref Message m)
{
var borderWidth = 10;
if (m.Msg == WM_SETCURSOR)
{
if ((m.LParam.ToInt32() & 0xFFFF) == 0x2)
{
Cursor.Current = Cursors.SizeAll;
m.Result = (IntPtr)1;
return;
}
}
if (m.Msg == WM_NCLBUTTONDBLCLK)
{
m.Result = (IntPtr)1;
return;
}
base.WndProc(m);
if (m.Msg == WM_NCHITTEST)
{
var pos = PointToClient(new Point(m.LParam.ToInt32() & 0xFFFF, m.LParam.ToInt32() >> 16));
if (pos.X = ClientRectangle.Bottom - borderWidth)
m.Result = new IntPtr(17); // BOTTOMRIGHT
else if (pos.X = ClientRectangle.Bottom - borderWidth)
m.Result = new IntPtr(15); // Bottom
else
m.Result = new IntPtr(2); // Move
}
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle = cp.ExStyle | 0x2000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
}