VisualComponents/VisualComponentsLib/MyTextBox.cs

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;
}
}
}
}