Eto: ComboBox์— ํ…์ŠคํŠธ ์†์„ฑ ๋ฐ ์ด๋ฒคํŠธ ์ถ”๊ฐ€

์— ๋งŒ๋“  2020๋…„ 05์›” 19์ผ  ยท  7์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: picoe/Eto

ํ‚ค๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ๋ˆŒ๋ฆฐ ํ‚ค์˜ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค ๋ˆ„๋ฆ„ ์ž์ฒด๋Š” OnKeyDown ๋กœ ์žก๊ธฐ ์‰ฝ์ง€๋งŒ ์ž…๋ ฅํ•œ ๋ฌธ์ž๋ฅผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ํ…์ŠคํŠธ์—์„œ ์ปค์„œ ์œ„์น˜๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ ๋ถ„๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ๊ฐ€ ์ด๋ฏธ ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ OnTextChanged ์ด๋ฒคํŠธ๊ฐ€ ๋„ˆ๋ฌด ๋Šฆ๊ฒŒ ํ˜ธ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  7 ๋Œ“๊ธ€

์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š” TextInput ์ด๋ฒคํŠธ๋ฅผ ์‹œ๋„ํ•˜์„ธ์š”. TextBox ๋˜๋Š” TextArea์˜ ์ปค์„œ ์œ„์น˜๋Š” TextBox.Selection ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ฒฐ๊ณผ์ ์œผ๋กœ MaskedTextBox ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ, ์›ํ•˜๋Š” ๋Œ€๋กœ ํ…์ŠคํŠธ๋ฅผ ๋ฒˆ์—ญํ•˜๋Š” IMaskedTextProvider ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์ž…๋‹ˆ๋‹ค. VariableMaskedTextProvider ๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๊ตฌํ˜„์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

```c#
ํด๋ž˜์Šค UpperCaseProvider : VariableMaskedTextProvider
{
๊ณต๊ฐœ ์žฌ์ •์˜ bool Insert(char ๋ฌธ์ž, ref int ์œ„์น˜)
{
๋ฐ˜ํ™˜ base.Insert(char.ToUpper(๋ฌธ์ž), ์ฐธ์กฐ ์œ„์น˜);
}

public override bool Replace(char character, ref int position)
{
    base.Replace(char.ToUpper(character), ref position);
}

}

Then to use it:
```c#
new MaskedTextBox(new UpperCaseProvider());

๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํ•  ๊ฒƒ์ด๋‹ค.

๋ฌธ์„œ์— iOS TextInput ์— ์ œํ•œ์ด ์žˆ๋‹ค๊ณ  ๋‚˜์™€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์  ์žฅ.

ComboBox ์—์„œ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ControlObject ๋ฅผ Eto.Wpf.Forms.Controls.EtoComboBox ๋กœ ์บ์ŠคํŒ…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค( TextBox ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด). ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ , ์˜ˆ, ComboBox ์—๋Š” TextBox ์ฒ˜๋Ÿผ ๋ชจ๋“  ํ…์ŠคํŠธ ์ด๋ฒคํŠธ/์†์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค. ์•„๋งˆ ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ํ˜•ํƒœ์˜ ์ž๋™ ์™„์„ฑ์„ ์‹œ๋„ํ•˜๋Š” ๊ฒฝ์šฐ ์ €์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ๋˜ ํ•œ ๊ฐ€์ง€๋Š” TextBox๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ฒฝ๊ณ„์„  ์—†๋Š” ์–‘์‹์„ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋˜ํ•œ ํ‘œ์‹œ๋˜๋Š” ํ•ญ๋ชฉ๊ณผ ํ‘œ์‹œ ๋ฐฉ๋ฒ•์— ๋” ๋งŽ์€ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์•ฝ๊ฐ„์˜ ์ž‘์—…์œผ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.

ํ•  ๊ฒƒ์ด๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”.

@LaraSQP๋‹˜ , ComboBox์˜ ์†์„ฑ/์ด๋ฒคํŠธ ๊ตฌํ˜„์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์„ ์—ด์–ด ๋‘ก๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๋งž์Šต๋‹ˆ๋‹ค. ๋ฏธ์•ˆํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰