Я нашел принятый ответ @rezaaghaei in:
Создание пользовательской картинки с помощью перетаскиваемого и изменяемого окна выбора
и он работает отлично. < /p>
Тем не менее, только событие Resisize работает. Никакое другое событие не работает. < /P>
Я использую его для другой цели. Моя цель - добавить несколько пользовательских элементов управления на PictureBox. Когда пользователь нажимает на любой, он отображает свойства usercontrol, такие как имя, путь изображения, размер и многое другое. < /P>
Полный код приведен ниже. Удивительно только событие Resisize работает.
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>
Я пробовал много вещей, но не удалось запустить событие Click < /code> или любое другое событие.
Пожалуйста, поделитесь решением или любой другой ссылкой , сообщение, где я выполняю свое требование.
Подробнее здесь: https://stackoverflow.com/questions/793 ... indow-case
Создание пользовательского изображения с перетаскиваемым и резализируемым окном выбора: Case Repeen ⇐ C#
Место общения программистов C#
1737798507
Anonymous
Я нашел принятый ответ @rezaaghaei in:
Создание пользовательской картинки с помощью перетаскиваемого и изменяемого окна выбора
и он работает отлично. < /p>
Тем не менее, только событие Resisize работает. Никакое другое событие не работает. < /P>
Я использую его для другой цели. Моя цель - добавить несколько пользовательских элементов управления на PictureBox. Когда пользователь нажимает на любой, он отображает свойства usercontrol, такие как имя, путь изображения, размер и многое другое. < /P>
Полный код приведен ниже. Удивительно только событие Resisize работает.
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>
Я пробовал много вещей, но не удалось запустить событие Click < /code> или любое другое событие.
Пожалуйста, поделитесь решением или любой другой ссылкой , сообщение, где я выполняю свое требование.
Подробнее здесь: [url]https://stackoverflow.com/questions/79379962/creating-custom-picturebox-with-draggable-and-resizable-selection-window-case[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия