[Autosize of UserControl based on TokenEdit (DevExpress, WinForms)]
Еще один простой пример реализации пользовательского контрола, когда понадобилась поддержка его автоматического вертикального изменения в элементе управления LayoutControl. Для этого элемент управления должен нужным образом реализовывать интерфейс IXtraResizableControl.
Как это выглядит в деле:
Элемент управления простой, состоит из двух элементов - собственно TokenEdit и SimpleButton (в моем случае предусмотрен для редактирования списка элементов токена). Для TokenEdit свойство Anchor имеет значения "Top, Left, Right" и для SimpleButton значения "Left, Right".
Код реализации:
using DevExpress.Utils.Controls;
using DevExpress.XtraEditors;
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class UserControl1 : UserControl , IXtraResizableControl
{
public UserControl1() {
InitializeComponent();
this.Height = GetMaxHeight();
this.tokenEdit1.Resize += tokenEdit1_Resize;
}
public TokenEdit TokenCtrl { get { return tokenEdit1; } }
private int GetMaxHeight() {
// выбираем наибольшее значение высоты из двух доступных элементов: TokenEdit или SimpleButton
return simpleButton1.Height > tokenEdit1.Height ? simpleButton1.Height : tokenEdit1.Height;
}
int height = 0;
void tokenEdit1_Resize(object sender, EventArgs e) {
if (height != GetMaxHeight()) {
height = GetMaxHeight();
if (ChangedCore != null) ChangedCore(this, EventArgs.Empty);
}
}
event EventHandler ChangedCore;
event EventHandler IXtraResizableControl.Changed {
add { ChangedCore += value; }
remove { ChangedCore -= value; }
}
public bool IsCaptionVisible {
get { return false; }
}
public Size MaxSize {
get { return new Size(0, GetMaxHeight()); }
}
public Size MinSize {
get { return new Size(0, GetMaxHeight()); }
}
}
}
Ну и на последок, инициализация элемента данными для теста:
using DevExpress.XtraEditors;
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
for (int i = 1; i < 10; i++) {
TestObject obj1 = new TestObject();
obj1.ID = i.ToString();
obj1.Value = "Value " + i;
userControl11.TokenCtrl.Properties.Tokens.Add(new TokenEditToken(obj1));
}
}
class TestObject
{
public String ID { get; set; }
public String Value { get; set; }
public override string ToString() {
return Value;
}
}
}
}
Подписаться на:
Комментарии к сообщению (Atom)
1 комментарий:
r383w9tntpr498 male sexy toys,glass dildos,Male Masturbators,male masturbator,cheap sex toys,Panty Vibrators,dog dildo,vibrating dildos,horse dildos y243i9ywsrh183
Отправить комментарий