130 lines
2.0 KiB
C#
130 lines
2.0 KiB
C#
using DocumentFormat.OpenXml.Drawing.Diagrams;
|
||
using KOP_Labs.Exceptions;
|
||
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 static System.Windows.Forms.VisualStyles.VisualStyleElement.Button;
|
||
|
||
namespace CustomComponents.ZhelovanovVisualComponents
|
||
{
|
||
public partial class TextBoxComponent : UserControl
|
||
{
|
||
|
||
public TextBoxComponent()
|
||
{
|
||
InitializeComponent();
|
||
Error = string.Empty;
|
||
}
|
||
|
||
public string Error { get; private set; }
|
||
|
||
public float? Value
|
||
{
|
||
get
|
||
{
|
||
if (checkBox1.Checked)
|
||
{
|
||
return null;
|
||
}
|
||
if (CheckValue())
|
||
{
|
||
return float.Parse(textBox.Text);
|
||
}
|
||
|
||
return null;
|
||
|
||
|
||
}
|
||
set
|
||
{
|
||
|
||
|
||
if (value == null)
|
||
{
|
||
checkBox1.Checked = true;
|
||
}
|
||
textBox.Text = value.ToString();
|
||
|
||
|
||
}
|
||
}
|
||
private EventHandler checkChanged;
|
||
public event EventHandler CheckChanged
|
||
{
|
||
add
|
||
{
|
||
checkChanged += value;
|
||
}
|
||
remove
|
||
{
|
||
checkChanged -= value;
|
||
}
|
||
}
|
||
|
||
private void CheckBox_CheckedChanged(object sender, EventArgs e)
|
||
{
|
||
Error = string.Empty;
|
||
if (checkBox1.Checked)
|
||
{
|
||
textBox.Enabled = false;
|
||
textBox.Text = string.Empty;
|
||
}
|
||
else
|
||
{
|
||
textBox.Enabled = true;
|
||
|
||
}
|
||
checkChanged?.Invoke(sender, e);
|
||
}
|
||
|
||
private EventHandler valueChanged;
|
||
public event EventHandler ValueChanged
|
||
{
|
||
add
|
||
{
|
||
valueChanged += value;
|
||
}
|
||
remove
|
||
{
|
||
valueChanged -= value;
|
||
}
|
||
}
|
||
|
||
public bool CheckValue()
|
||
|
||
{
|
||
Error = string.Empty;
|
||
if (!checkBox1.Checked && (string.IsNullOrEmpty(textBox.Text)))
|
||
{
|
||
|
||
Error = "Пусто!";
|
||
return false;
|
||
|
||
}
|
||
if (!checkBox1.Checked && !float.TryParse(textBox.Text, out float floatValue))
|
||
{
|
||
|
||
Error = "Не тот тип!";
|
||
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
|
||
}
|
||
private void TextBox_TextChanged(object sender, EventArgs e)
|
||
{
|
||
|
||
valueChanged?.Invoke(sender, e);
|
||
}
|
||
|
||
|
||
}
|
||
}
|