๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ–ฅ๏ธ133

[C# WPF] WPF TextTrimming์ด ๊ฐ€๋Šฅํ•œ ์กฐ๊ฑด TextTrimming WPF์—์„œ๋Š” TextBlock์˜ TextTrimming ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์งˆ ๋•Œ ํŠธ๋ฆฌ๋ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปจํŠธ๋กค์˜ ๊ธธ์ด๋ณด๋‹ค ๋‚ด๋ถ€ ํ…์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด์ง€๋ฉด, ๋์— ... ์„ ํ‘œ์‹œํ•ด์„œ ํ…์ŠคํŠธ๊ฐ€ ๋” ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค€๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ TextBlock์„ ํ•˜๋‚˜ ๋งŒ๋“ค์ž. ์œ„ ํ…์ŠคํŠธ๋Š” Width 100์ธ TextBlock๋ณด๋‹ค ๊ธธ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์ฒ˜๋Ÿผ ์ž˜๋ฆฌ๊ฒŒ ๋œ๋‹ค. ํ˜„์žฌ๊นŒ์ง€๋Š” ์œ„ ํ…์ŠคํŠธ๊ฐ€ "I am REALLY long"์ธ์ง€, ์•„๋‹ˆ๋ฉด ๋’ค์— ๋” ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค. ์ด ๋•Œ TextTrimming ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ...์ด ๋ณด์ด๊ฒŒ ๋œ๋‹ค. TextTrimming="WordEllipsis" Text Trimming์—๋Š” 3๊ฐ€์ง€ ์†์„ฑ์ด ์žˆ๋‹ค. 1. None: ํ…์ŠคํŠธ๊ฐ€ ํ™”๋ฉด์„ ๋„˜์–ด๊ฐ€๋ฉด ์ž๋ฅด์ง€ ์•Š๊ณ  ๊ทธ.. 2023. 10. 31.
[C#] ์บ์ŠคํŒ…(Casting)๊ณผ Convert ํด๋ž˜์Šค ๋ฐ์ดํ„ฐ ํƒ€์ž… ๊ฐ„์˜ ๋ณ€ํ™˜ ์•”์‹œ์  ๋ณ€ํ™˜ (Implicit Conversion) ์ •์ˆ˜๋Š” ์‹ค์ˆ˜์ด๋‹ค. ์ด ๋ง์€ ๋งž๋Š” ๋ง์ด๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ •์ˆ˜๋Š” ์‹ค์ˆ˜์— ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ ‡๋“ฏ ๋ฒ”์œ„๊ฐ€ ๋” ํฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ• ๋•Œ๋Š” ๋ฐ์ดํ„ฐ ์†์‹ค์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋”ฐ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ์•ˆํ•ด์ค˜๋„ ๋ณ€ํ™˜์ด ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค. int ๋ณด๋‹ค ๋” ํฐ ๋ฒ”์œ„์˜ ์ •์ˆ˜์ธ long, ์‹ค์ˆ˜๋ฒ”์œ„์ธ float์™€ double์€ ๋”ฐ๋กœ ๋ณ€ํ™˜์„ ์•ˆํ•ด์ฃผ์–ด๋„ intํ˜•์ด ์ž๋™์œผ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ช…์‹œ์  ๋ณ€ํ™˜ (Explicit Conversion) ๋ฐ˜๋Œ€๋กœ '์‹ค์ˆ˜๋Š” ์ •์ˆ˜์ด๋‹ค.' ์ด ๋ง์€ ํ‹€๋ฆฌ๋‹ค. ์‹ค์ˆ˜๋ฅผ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜์‹œํ‚ค๋ ค๋ฉด ์†Œ์ˆ˜์ ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ฒ„๋ ค์•ผํ•˜๊ณ , ์˜ฌ๋ฆผํ• ์ง€ ๋ฒ„๋ฆผํ• ์ง€๋„ ์ •ํ•ดํ–ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์˜ ๋ณ€ํ™˜์„ ๋ช…์‹œ์  ๋ณ€ํ™˜์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด ๋ณ€ํ™˜.. 2023. 10. 19.
[C#] ์• ํŠธ๋ฆฌ๋ทฐํŠธ(Attribute)๋ž€? ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋Š” C# ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์„ ๊ฐ™์€ ๊ฒƒ์ด๋‹ค. ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋Š” ๋Œ€๊ด„ํ˜ธ [ ] ์•ˆ์— ์œ„์น˜ํ•˜๋ฉฐ, ์ฝ”๋“œ์— ๋ถ€๊ฐ€ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์ œ๊ณต๋˜๋Š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ ์ข…๋ฅ˜ ์•„๋ž˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ์˜ ์ข…๋ฅ˜์ด๋‹ค. [Serializable]: ํด๋ž˜์Šค๊ฐ€ ์ง๋ ฌํ™”๋  ์ˆ˜ ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. [DllImport]: ์™ธ๋ถ€ ๋„ค์ดํ‹ฐ๋ธŒ DLL ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. [WebMethod]: ASP.NET ์›น ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์›น ์„œ๋น„์Šค ๋ฉ”์„œ๋“œ๋กœ ๋…ธ์ถœ๋˜์–ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค. [Authorize]: ASP.NET์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ํŠน์ • ํŽ˜์ด์ง€ ๋˜๋Š” ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ํ™•์ธํ•œ๋‹ค. [Description]: ํด๋ž˜์Šค ๋˜๋Š” ๋ฉค๋ฒ„์˜ ์„ค๋ช…์„ ์ œ๊ณตํ•œ๋‹ค. [Conditional]: ํŠน์ • ์กฐ๊ฑด์— .. 2023. 10. 18.
[C# WPF] e.Handled = true; e.Handled = true; Event Handled, ์ฆ‰ ์ด๋ฒคํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค๋Š” ๋œป์ด๋‹ˆ๊นŒ.. ์ฒ˜์Œ์—๋Š” ๊ทธ๋ƒฅ for๋ฌธ์˜ break์™€ ๊ฐ™์€ ์—ญํ• ์ธ ์ค„ ์•Œ์•˜๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋Œ€์ถฉ ๋„˜์–ด๊ฐ€๊ณ  ์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๊ฐ€, ๊ณ„์†ํ•ด๋„ ์•ˆ๋˜์—ˆ๋˜ ๊ฒƒ์ด e.Handled = true;๋ฅผ ์•ˆ ํ•ด์ค˜์„œ ๊ทธ๋žฌ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๋‹ค์‹œ ์ œ๋Œ€๋กœ ์ดํ•ดํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด์•˜๋‹ค. private void SimpleButton_Click(object sender, RoutedEventArgs e) { if (true) { MessageBox.Show("1"); e.Handled = true; MessageBox.Show("1-2"); } if (true) { MessageBox.Show("2"); e.Handled = t.. 2023. 10. 16.
[C#] LINQ์—์„œ foreach๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์“ฐ๋ฉด ์•ˆ๋˜๋Š” ์ด์œ  LINQ์™€ foreach var list = new List { new Profile() { Name = "A", Age = 1 }, new Profile() { Name = "B", Age = 2 }, new Profile() { Name = "C", Age = 3 }, new Profile() { Name = "D", Age = 4 }, new Profile() { Name = "E", Age = 5 }, new Profile() { Name = "F", Age = 3 }, }; var a = list.Where(profile => profile.Age > 1); if (a.Any()) { foreach (var profile in a) { Console.WriteLine(profile.Name); .. 2023. 10. 12.
[C#] LINQ์˜ Single()์— ๋Œ€ํ•ด์„œ Single() single์€ ์ปฌ๋ ‰์…˜์—์„œ ์œ ์ผํ•œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. var list = new List { new Profile() { Name = "A", Age = 1 }, new Profile() { Name = "B", Age = 2 }, new Profile() { Name = "C", Age = 3 }, new Profile() { Name = "D", Age = 4 }, new Profile() { Name = "E", Age = 5 }, new Profile() { Name = "F", Age = 6 } }; var singleList = list.Single(x => x.Age == 3); Console.WriteLine(singleList.ToString()); ์œ„ list์—์„œ Age๊ฐ€ .. 2023. 10. 12.
[C#] ์Šค๋ ˆ๋“œ์˜ ํฌ๋ฆฌํ‹ฐ์ปฌ ์„น์…˜(Critical Section) public static void IncrementCounter() { for (int i = 0; i < 100000; i++) { counter++; } } ์œ„ ๋ฉ”์„œ๋“œ๋Š” counter์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ 100,000๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ 1์”ฉ ์˜ฌ๋ฆฌ๋Š” ์ž‘์—…์„ ํ•œ๋‹ค. ๋งŒ์•ฝ ์ด counter ๋ณ€์ˆ˜๋ฅผ ๊ฐ™์ด ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ™์ด ์‹œ์ž‘๋˜์—ˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. Thread t1 = new Thread(IncrementCounter); Thread t2 = new Thread(IncrementCounter); t1.Start(); t2.Start(); t1.Join(); t2.Join(); t1 ์Šค๋ ˆ๋“œ๋„ 100,000, t2 ์Šค๋ ˆ๋“œ๋„ 100,000์„ ์˜ฌ๋ ค์„œ count๋Š” 200,000์ด ๋˜์–ด์•ผํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์‹ค์ œ๋กœ ์‹คํ–‰์‹œ์ผœ๋ณด๋ฉด ๋งค๋ฒˆ ๋‹ค.. 2023. 10. 11.
[C#] ์Šค๋ ˆ๋“œ(Thread) ์Šค๋ ˆ๋“œ(Thread) ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์€ ๋ง ๊ทธ๋Œ€๋กœ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ฐ ์Šค๋ ˆ๋“œ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๊ณผํ•œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์€ ์˜คํžˆ๋ ค ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ค๊ณ , ๊ตฌํ˜„์ด ๋ณต์žกํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•œ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ ์‹œ์ž‘ํ•˜๋Š” ๋ฒ• 1. Thread ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ 2. Thread.Start()๋กœ ์Šค๋ ˆ๋“œ ์‹œ์ž‘ 3. Thread.Join()์œผ๋กœ ์Šค๋ ˆ๋“œ ์ข…๋ฃŒ ๋Œ€๊ธฐ // No Parameter Thread thread = new Thread(Run); thread.Start(); thread.Join(); // Parameter exist Thread thread2 = new Thread(.. 2023. 10. 11.

"); wcs_do();