1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kwwwvagaa-net_winform_custom_control

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Website

https://www.hzhcontrols.cn

NetWinformCustom Controls

Введение

Пользовательский элемент управления C# для WinForm, который лучше поддерживает работу с сенсорным экраном. Проект основан на Framework 4.0 и представляет собой полностью нативное управление без использования сторонних элементов управления.

Блог: https://www.cnblogs.com/bfyx

Code Cloud: https://gitee.com/kwwwvagaa/net_winform_custom_control.git

Добро пожаловать в обсуждение: Присоединяйтесь к группе QQ 568015492

Если мой код вам полезен, пожалуйста, вознаградите меня. Спасибо, ваша награда — моя мотивация.

Если мой код вам полезен, пожалуйста, наградите меня, спасибо, ваша награда – моя мотивация.

Введите описание изображения Введите описание изображения

Исходный код предназначен только для обмена и обучения. Соглашение об открытом исходном коде — MPL 2.0 (https://gitee.com/kwwwvagaa/net_winform_custom_control/blob/master/LICENSE). Для коммерческого использования свяжитесь с владельцем группы.

Приходите сюда, приходите к «Звезде» и вперёд!

NuGet

Install-Package HZH_Controls
Приведённый ниже контент является лишь частью элемента управления, дополнительные эффекты управления см. в исходном коде или демоверсии!

Пример

1. Окна подсказок

Пример изображения Пример изображения

If (FrmDialog.ShowDialog(this, «Вы хотите отобразить окно подсказки без кнопки отмены?», «Режим тестирования формы», true) == System.Windows.Forms.DialogResult.OK)
{
    FrmDialog.ShowDialog(this, «Это окно подсказки без кнопки отмены», «Режим тестирования формы»);
}
2. Многократная форма ввода

Пример изображения

FrmInputs frm = new FrmInputs («Динамическая форма многократного ввода»,
                New string[] { «имя», «телефон», «номер удостоверения личности», «адрес» },
                New Dictionary<string, HZH_Controls.TextInputType>() { { «Телефон», HZH_Controls.TextInputType.Regex }, { «Номер удостоверения личности», HZH_Controls.TextInputType.Regex } },
                New Dictionary<string, string>() { { «phone», "^1\\d{10}$" }, { «ID number», "^\\d{18}$" } },
                New Dictionary<string, KeyBoardType>() { { «phone», KeyBoardType.UCKeyBorderNum }, { «ID number», KeyBoardType.UCKeyBorderNum } },
                New List<string>() { «имя», «телефон», «идентификационный номер» });
frm.ShowDialog(this);
``` **1. Public FrmInputs**

name Public FrmInputs( String strTitle, String[] inPutLabels, Dictionary<string, TextInputType> inTypes = null, Dictionary<string, string> regexs = null, Dictionary<string, HZH_Controls.Controls.KeyBoardType> keyBoards = null, List mastInputs = null, Dictionary<string, string> defaultValues ​​= null)


**2. Temp1 form**

На этом месте в запросе нет текста.

**3. Form FrmTemp1Test наследует HZH_Controls.Forms.FrmTemp1**

``` csharp
/ / New form FrmTemp1Test inherits HZH_Controls.Forms.FrmTemp1
FrmTemp1Test frm = new FrmTemp1Test();
frm.ShowDialog(this);

4. Форма для подтверждения отмены 1

На этом месте в запросе нет текста.

5. Форма для подтверждения отмены 2

/ / New form FrmOKCancel2Test inherits HZH_Controls.Forms.FrmWithOKCancel2
FrmOKCancel2Test frm = new FrmOKCancel2Test();
frm.ShowDialog(this);

6. Форма с одним заголовком

/ / New form FrmWithTitleTest inherits HZH_Controls.Forms.FrmWithTitle
FrmWithTitleTest frm = new FrmWithTitleTest();
frm.ShowDialog(this);

7. Элементы управления

Текстовое поле с эффектом клавиатуры

На этом месте в запросе нет текста и изображений.

Контроль времени

На этом месте в запросе нет текста и изображений.

Раскрывающийся список привязки данных

/ / Use the method is similar to the native ComboBox
List<KeyValuePair<string, string>> lstCom = new List<KeyValuePair<string, string>>();
For (int i = 0; i < 5; i++)
{
    lstCom.Add(new KeyValuePair<string, string>(i.ToString(), "options" + i));
}

this.ucComboBox1.Source = lstCom;
this.ucComboBox2.Source = lstCom;
this.ucComboBox1.SelectedIndex = 1;
this.ucComboBox2.SelectedIndex = 1;

Привязка данных к дереву

/ / Use the same method as the native Treeview, set the property IsShowByCustomModel = true to enable the custom mode, otherwise the original tree
For (int i = 0; i < 5; i++)
{
    TreeNode tn = new TreeNode("parent node" + i);
    For (int j = 0; j < 5; j++)
    {
        tn.Nodes.Add("child node" + j);
    }
    this.treeViewEx1.Nodes.Add(tn);
}

Список привязки данных

/ / Customizable color fonts, etc.
List<ListEntity> lst = new List<ListEntity>();
For (int i = 0; i < 5; i++)
{
    lst.Add(new ListEntity()
    {
        ID = i.ToString(),
        Title = "options" + i,
        ShowMoreBtn = true,
        Source = i
    });
}
this.ucListExt1.SetList(lst);

Горизонтальный список привязки данных

List<KeyValuePair<string, string>> lstHL = new List<KeyValuePair<string, string>>();
For (int i = 0; i < 30; i++)
{
    lstHL.Add(new KeyValuePair<string, string>(i.ToString(), "options" + i));
}

this.ucHorizontalList1.DataSource = lstHL;

8. Datagridview

На этом месте в запросе нет текста и изображений. Перевод текста на русский язык:

List<DataGridViewColumnEntity> lstCulumns = new List<DataGridViewColumnEntity>();
lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "ID", HeadText = "Number", Width = 70, WidthType = SizeType.Absolute });
lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "Name", HeadText = "Name", Width = 50, WidthType = SizeType.Percent });
lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "Age", HeadText = "Age", Width = 50, WidthType = SizeType.Percent });
lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "Birthday", HeadText = "Birthday", Width = 50, WidthType = SizeType.Percent, Format = (a) => { return ((DateTime)a).ToString("yyyy-MM-dd"); } });
lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "Sex", HeadText = "Gender", Width = 50, WidthType = SizeType.Percent, Format = (a) => { return ((int)a) == 0 ? "female": "male"; } });
this.ucDataGridView1.Columns = lstCulumns;
this.ucDataGridView1.IsShowCheckBox = true;
List<object> lstSource = new List<object>();
for (int i = 0; i < 20; i++)
{
    TestModel model = new TestModel()
    {
        ID = i.ToString(),
        Age = 3 * i,
        Name = "name -" + i,
        Birthday = DateTime.Now.AddYears(-10),
        Sex = i % 2
    };
    lstSource.Add(model);
}

UCPagerControl page = new UCPagerControl();
//UCPagerControl2 page = new UCPagerControl2();
page.DataSource = lstSource;
this.ucDataGridView1.Page = page;
this.ucDataGridView1.First();

Если UCPagerControl не соответствует вашим потребностям, вы можете настроить управление перелистыванием страниц и наследовать UCPagerControlBase, например, изменить стиль, добавить логику и т. д.

Если вам нужно подписать страницу данных, начиная с 10, вы можете установить StartIndex = 10, а затем вызвать... Использование GetCurrentSource():

m_page.DataSource = lstSource;
m_page.PageSize = ShowCount;
m_page.StartIndex = 10;
this.dgv.DataSource = m_page.GetCurrentSource();

Использование управления переворотом страницы для любого элемента управления типа списка:

Пример кода выше использует только datagridview для иллюстрации использования. Использование следующее:

  1. Установите свойство DataSource источника данных.
  2. Установите свойство PageSize, чтобы отобразить объём данных на странице.
  3. Установите время ShowSourceChanged, чтобы установить текущий источник данных страницы на целевой элемент управления вовремя.
  4. Если первая страница данных не отображается после загрузки страницы, вы можете вручную вызвать GetCurrentSource() и назначить его целевому элементу управления, например:
m_page.DataSource=lstSource;
m_page.PageSize = ShowCount;
this.dgv.DataSource = m_page.GetCurrentSource();

10. Отображение всплывающих подсказок (5 встроенных и пользовательских стилей):

sample image

FrmTips.ShowTipsError(this, «Ошибка»);
FrmTips.ShowTipsInfo(this, «Информация»);
FrmTips.ShowTipsSuccess(this, «Успех»);
FrmTips.ShowTipsWarning(this, «Предупреждение»);
/* Можно использовать кастомизацию
Public static FrmTips ShowTips(
Form frm,
String strMsg,
Int intAutoColseTime = 0,
Bool blnShowCoseBtn = true,
ContentAlignment align = ContentAlignment.BottomLeft,
Point? point = null,
TipsSizeMode mode = TipsSizeMode.Small,
Size? size = null,
TipsState state = TipsState.Default)
*/

11. Ожидание многопоточной операции:

![sample image](https://images.gitee.com/uploads/images/2019/0808/144201_932c5259_301547.png «waiting.png»)

/ / Эта форма обычно используется в длительных операциях потока для отображения анимации ожидания, ниже приведён пример длительной операции с использованием нескольких потоков
ControlHelper.ThreadRunExt(this, () =>
{
    Thread.Sleep(5000);
    ControlHelper.ThreadInvokerControl(this, () =>
    {
        FrmTips.ShowTipsSuccess(this, "FrmWaiting test");
    });
}, null, this);
// ControlHelper.ThreadRunExt используется для открытия потока для выполнения задач
// ControlHelper.ThreadInvokerControl — это асинхронный делегат вызова управления
/// <summary>
/// Использовать один поток для выполнения операции
/// </summary>
/// <param name="parent">родительский контроль</param>
/// <param name="func">Содержание выполнения</param>
/// <param name="callback">обратный вызов после выполнения</param>
/// <param name="enableControl">Отключить список управления во время выполнения</param>
/// <param name="blnShowSplashScreen">Отображать ли подсказку во время выполнения</param>
/// <param name="strMsg">По умолчанию «Обработка, пожалуйста, подождите...» во время ожидания подсказки во время выполнения</param>
/// <param name="intSplashScreenDelayTime">Задержка отображения времени ожидания напоминания</param>
Public static void ThreadRunExt(
Control parent,
Action func,
Action<object> callback,
Control[] enableControl = null,
Bool blnShowSplashScreen = true,
String strMsg = null,
Int intSplashScreenDelayTime = 200)

12. Управление навигацией по меню:

![sample image](https://images.gitee.com/uploads/images/2019/0815/103949_9fdb0d12_301547.png «menu.png»)

List<MenuItemEntity> lstMenu = new List<MenuItemEntity>();
For (int i = 0; i < 5; i++)
{
MenuItemEntity item = new MenuItemEntity()
{
Key = «p» + i.ToString(),
Text = «пункт меню» + i,
DataSource = «Есть некоторые пользовательские источники данных для расширения здесь»
};
item.Childrens = new List<MenuItemEntity>();
For (int j = 0; j < 5; j++)
{
MenuItemEntity item2 = new MenuItemEntity()
{
Key = «c» + i.ToString(),
Text = «пункт меню» + i + «-» + j,
DataSource = «Есть некоторые пользовательские источники данных для расширения здесь»
};
item.Childrens.Add(item2);
}
lstMenu.Add(item);
}
this.ucMenu1.DataSource
``` **//Timer randomly adds numbers at regular intervals**

Random r = new Random();
Int i = r.Next(100, 1000);
this.ucWaveWithSource1.AddSource(i.ToString(), i);

**//23, TreeGrid**

``` csharp
Private void FrmTemp1Test_Load(object sender, EventArgs e)
{
    this.ucDataGridView1.RowType = typeof(UCDataGridViewTreeRow);
    this.ucDataGridView1.IsAutoHeight = true;

    List<DataGridViewColumnEntity> lstCulumns = new List<DataGridViewColumnEntity>();
    lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "ID", HeadText = "Number", Width = 70, WidthType = SizeType.Absolute });
    lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "Name", HeadText = "Name", Width = 50, WidthType = SizeType.Percent });
    lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "Age", HeadText = "Age", Width = 50, WidthType = SizeType.Percent });
    lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "Birthday", HeadText = "Birthday", Width = 50, WidthType = SizeType.Percent, Format = (a) => { return ((DateTime)a).ToString(" yyyy-MM-dd"); } });
    lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "Sex", HeadText = "Gender", Width = 50, WidthType = SizeType.Percent, Format = (a) => { return ((int)a) == 0 ? "female": "male"; } });
    this.ucDataGridView1.Columns = lstCulumns;
    this.ucDataGridView1.IsShowCheckBox = true;
    List<object> lstSource = new List<object>();
    for (int i = 0; i < 200; i++)
    {
        TestModel model = new TestModel()
        {
            ID = i.ToString(),
            Age = 3 * i,
            Name = "name -" + i,
            Birthday = DateTime.Now.AddYears(-10),
            Sex = i % 2
        };
        lstSource.Add(model);
        AddChilds(model, 5);
    }

    var page = new UCPagerControl2();
    page.DataSource = lstSource;
    this.ucDataGridView1.Page = page;
    this.ucDataGridView1.First();
}

Private void AddChilds(TestModel tm, int intCount)
{
    if (intCount <= 0)
        return;
    tm.Childrens = new List<TestModel>();
    for (int i = 0; i < 5; i++)
    {
        TestModel model = new TestModel()
        {
            ID = i.ToString(),
            Age = 3 * i,
            Name = intCount + "-" + i,
            Birthday = DateTime.Now.AddYears(-10),
            Sex = i % 2
        };
        tm.Childrens.Add(model);
        AddChilds(model, intCount - 1);
    }
}

//24, table drop-down box

List<DataGridViewColumnEntity> lstCulumns = new List<DataGridViewColumnEntity>();
lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "ID", HeadText = "Number", Width = 70, WidthType = SizeType.Absolute });
lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "Name", HeadText = "Name", Width = 100, WidthType = SizeType.Absolute });
lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "Age", HeadText = "Age", Width = 100, WidthType = SizeType.Absolute });
lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "Birthday", HeadText = "Birthday", Width = 120, WidthType = SizeType.Absolute, Format = (a) => { return ((DateTime)a).ToString("yyyy-MM-dd"); } });
lstCulumns.Add(new DataGridViewColumnEntity() { DataField = "Sex", HeadText = "Gender", Width = 100, WidthType = SizeType.Absolute, Format = (a) => { return ((int)a) == 0 ? "female": "male"; } });
this.ucComboxGrid1.GridColumns =

``` **lstColumns;**

List<object> lstSourceGrid = new List<object>();

For (int i = 0; i < 100; i++)
{
    TestModel model = new TestModel()
    {
        ID = i.ToString(),
        Age = 3 * i,
        Name = "name -" + i,
        Birthday = DateTime.Now.AddYears(-10),
        Sex = i % 2
    };
    lstSourceGrid.Add(model);
}
this.ucComboxGrid1.GridDataSource = lstSourceGrid;

**25. TrackBar**

*Текст без перевода.*

**26. ToolTips (toolTips)**

*Текст без перевода.*

**27. Scrolling text**

*Текст без перевода.*

**28. Instrument**

*Текст без перевода.*

**29. Pipeline**

*Текст без перевода.*

**30. Bottle**

*Текст без перевода.*

**31. Conveyor belt**

*Текст без перевода.*

**32. Valve**

*Текст без перевода.*

**33. Blower**

*Текст без перевода.*

**34. Signal light**

*Текст без перевода.*

**35. Alarm Lamp**

*Текст без перевода.*

**36. Temperature**

*Текст без перевода.*

**37. Mind Mapping**

*Текст без перевода.*

**38. Icon**

*Текст без перевода.*

**39. BarChart**

*Текст без перевода.*

**40. PieChart**

*Текст без перевода.*

**41. LineChart**

*Текст без перевода.*

**42. RadarChart**

*Текст без перевода.*

**43. LoadingSourceForm**

*Текст без перевода.*

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

HZHControls — библиотека компонентов для C# WinForm. Компоненты поддерживают улучшенное взаимодействие с сенсорными экранами. Проект основан на framework 4.0 и представляет собой полностью нативные компоненты без использования сторонних библиотек. Вы можете смело использовать их в своих проектах (winfromcontrol/winformcontrol/.net). Мы продолж... Развернуть Свернуть
MPL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/kwwwvagaa-net_winform_custom_control.git
git@api.gitlife.ru:oschina-mirror/kwwwvagaa-net_winform_custom_control.git
oschina-mirror
kwwwvagaa-net_winform_custom_control
kwwwvagaa-net_winform_custom_control
master