Ich habe die akzeptierte Antwort von @rezaaghaei in:
benutzerdefiniertes Bildkasten mit draggierbarem und resizbarem Auswahlfenster
gefunden und es funktioniert perfekt. < /p>
funktioniert jedoch nur das Ereignis von der Größe . Kein anderes Ereignis funktioniert. < /P>
Ich benutze es für einen anderen Zweck. Mein Ziel ist es, mehrere Benutzersteuerungen in die Bilderbox hinzuzufügen. Wenn der Benutzer auf einen beliebigen Bereich klickt, wird die Eigenschaften des UserControl wie Namen, Bildpfad, Größe und mehr angezeigt. < /P>
Der vollständige Code ist unten angegeben. Nur das Ereignis der Größe zu wundern.
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;
}
}
}
< /code>
Ich habe viele Dinge ausprobiert, aber das Klick -Ereignis oder ein anderes Ereignis nicht ausgelöst. , posten, wo ich meine Anforderung erfülle.
Erstellen eines benutzerdefinierten Bildfeld ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post