前回までの状況はこちら。
最新ソースはこちら。(gitHub)
https://github.com/takishita2nd/Picross
パレットの数字をクリックすることでダイアログの数字を入力する処理を作っていきます。
主にDialogクラスの実装です。
class Dialog
{
private string _rowValue = "10";
private string _colValue = "10";
private TextBox _selectedTextBox = null;
private string _selectedValue = string.Empty;
public void OnClick(asd.Vector2DF pos)
{
if (_palette.IsShow() == false)
{
if (_rowText.isClick(pos))
{
_selectedTextBox = _rowText;
_selectedValue = _rowValue;
_palette.Show(pos);
}
if (_colText.isClick(pos))
{
_selectedTextBox = _colText;
_selectedValue = _colValue;
_palette.Show(pos);
}
if (_button.isClick(pos))
{
_button.OnClick();
}
}
else
{
if (_palette.IsClick(pos))
{
string v = _palette.GetClickValue(pos);
_selectedValue = updateTextValue(_selectedTextBox, _selectedValue, v);
if (_selectedTextBox.Equals(_rowText))
{
_rowValue = _selectedValue;
}
else
{
_colValue = _selectedValue;
}
}
else
{
_palette.Hide();
_selectedTextBox = null;
_selectedValue = string.Empty;
}
}
}
private string updateTextValue(TextBox textBox, string value, string v)
{
string text = string.Empty;
switch (v)
{
case Palette.CODE.BS:
if(value.Length != 0)
{
text = value.Remove(value.Length - 1);
}
break;
case Palette.CODE.CLR:
text = string.Empty;
break;
default:
if(value.Length < 2)
{
text = value + v;
}
else
{
text = value;
}
break;
}
textBox.SetText(text);
return text;
}
}
テキストボックスがROWとCOLの二つがあるので、テキストボックスをクリックしたときに、どちらをクリックしたかを記憶しておきます。
パレットがクリックされた場合、何がクリックされたかをパレットから取得します。
その値を確認し、その数字をテキストボックスの値に文字列追加していきます。
しかし、今のところ、数字は2桁までとしておきます。
なので、桁が2桁オーバーしたり、0桁以下にならないようにガードかけておきます。
あ、0を入力できないや。
次回までに修正しておきまーす。
「【C#】【ピクロス】【ALTSEED】パレットから数字を入力する」への1件のフィードバック