93 lines
2.5 KiB
C#
93 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using VisualComponentsLib.CustomException;
|
|
|
|
namespace VisualComponentsLib
|
|
{
|
|
public partial class MyTextBox : UserControl
|
|
{
|
|
public string? Value
|
|
{
|
|
get
|
|
{
|
|
if (textBox.Text.Length <= 2 && !checkBox.Checked)
|
|
{
|
|
return new TextBoxException("Error").Message;
|
|
}
|
|
else
|
|
{
|
|
if(double.TryParse(textBox.Text, out double value))
|
|
{
|
|
return textBox.Text;
|
|
}
|
|
|
|
return new TextBoxException("Error").ToString();
|
|
}
|
|
}
|
|
|
|
set
|
|
{
|
|
if(value != null)
|
|
{
|
|
textBox.Text = value.ToString();
|
|
}
|
|
else
|
|
{
|
|
textBox.Text = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
private EventHandler _textChanged;
|
|
|
|
public new event EventHandler? TextChanged
|
|
{
|
|
add => _textChanged += value;
|
|
remove => _textChanged -= value;
|
|
}
|
|
|
|
public MyTextBox()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void CheckBox_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (textBox.ReadOnly == true)
|
|
{
|
|
textBox.ReadOnly = false;
|
|
}
|
|
else
|
|
{
|
|
textBox.ReadOnly = true;
|
|
|
|
Value = null;
|
|
|
|
textBox.Text = string.Empty;
|
|
}
|
|
}
|
|
|
|
private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
|
|
{
|
|
// Проверяем, является ли введенный символ цифрой, точкой или клавишей Backspace
|
|
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
|
|
{
|
|
e.Handled = true;
|
|
}
|
|
|
|
// Проверяем, является ли точка уже введенной и не находится ли она на первой позиции
|
|
if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1)
|
|
{
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
}
|
|
}
|