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 ChatworkBulkSender.Utils;
namespace ChatworkBulkSender.UserControls
{
public partial class PatternNameHeaderControl : UserControl
{
private ErrorProvider errorProvider;
public PatternNameHeaderControl()
{
InitializeComponent();
InitializeValidation();
}
private void InitializeValidation()
{
// ErrorProviderの初期化
errorProvider = new ErrorProvider();
errorProvider.BlinkStyle = ErrorBlinkStyle.NeverBlink;
// MaxLength設定
txtPatternName.MaxLength = Constants.PATTERN_NAME_MAX_LENGTH;
txtSortOrder.MaxLength = 3; // 最大999なので3桁
// イベントハンドラーの登録
txtPatternName.TextChanged += TxtPatternName_TextChanged;
txtSortOrder.TextChanged += TxtSortOrder_TextChanged;
txtSortOrder.KeyPress += TxtSortOrder_KeyPress;
}
private void TxtPatternName_TextChanged(object sender, EventArgs e)
{
ValidatePatternName();
}
private void TxtSortOrder_TextChanged(object sender, EventArgs e)
{
ValidateSortOrder();
}
private void TxtSortOrder_KeyPress(object sender, KeyPressEventArgs e)
{
// 数字とバックスペース以外の入力を制限
if (!char.IsDigit(e.KeyChar) && e.KeyChar != '\b')
{
e.Handled = true;
}
}
public bool ValidatePatternName()
{
if (string.IsNullOrWhiteSpace(txtPatternName.Text))
{
errorProvider.SetError(txtPatternName, "パターン名称を入力してください。");
return false;
}
else if (txtPatternName.TextLength > Constants.PATTERN_NAME_MAX_LENGTH)
{
errorProvider.SetError(txtPatternName,
ValidationHelperUtil.GetLengthErrorMessage("パターン名称", txtPatternName.TextLength, Constants.PATTERN_NAME_MAX_LENGTH));
return false;
}
else
{
errorProvider.SetError(txtPatternName, "");
return true;
}
}
public bool ValidateSortOrder()
{
if (string.IsNullOrWhiteSpace(txtSortOrder.Text))
{
errorProvider.SetError(txtSortOrder, "並び順を入力してください。");
return false;
}
if (!int.TryParse(txtSortOrder.Text, out int sortOrder))
{
errorProvider.SetError(txtSortOrder, "並び順は数値で入力してください。");
return false;
}
if (sortOrder < Constants.PATTERN_SORT_ORDER_MIN || sortOrder > Constants.PATTERN_SORT_ORDER_MAX)
{
errorProvider.SetError(txtSortOrder,
$"並び順は{Constants.PATTERN_SORT_ORDER_MIN}~{Constants.PATTERN_SORT_ORDER_MAX}の範囲で入力してください。");
return false;
}
errorProvider.SetError(txtSortOrder, "");
return true;
}
public bool ValidateAll()
{
bool isPatternNameValid = ValidatePatternName();
bool isSortOrderValid = ValidateSortOrder();
return isPatternNameValid && isSortOrderValid;
}
}
}