SampleCrossUi.WinForms 1.0.0.0
SampleCrossUi.WinForms 사용 방법을 보여 주는 예제 프로젝트입니다.
로딩중...
검색중...
일치하는것 없음
ControlsPage.cs
이 파일의 문서화 페이지로 가기
1using System.ComponentModel;
2using Dreamine.UI.WinForms;
3using Dreamine.UI.WinForms.Controls;
4using SampleCrossUi.Shared.ViewModels;
5
7
16public sealed class ControlsPage : UserControl
17{
18 // ── top-level ─────────────────────────────────────────
27 private Label _title = null!;
36 private DreamineTabControl _tabs = null!;
45 private Label _statusLabel = null!;
54 private Panel _layout = null!;
55
56 // ── Button tab ────────────────────────────────────────
65 private TabPage _tabButton = null!;
74 private FlowLayoutPanel _tabButtonFlow = null!;
83 private Label _lblButtonCard = null!;
92 private DreamineButton _btnClickMe = null!;
101 private Label _lblClickCount = null!;
102
103 // ── CheckBox/Radio tab ────────────────────────────────
112 private TabPage _tabCheckRadio = null!;
121 private FlowLayoutPanel _tabCheckRadioFlow = null!;
130 private Label _lblCbCard = null!;
139 private DreamineCheckBox _cb1 = null!;
148 private DreamineCheckBox _cb2 = null!;
157 private DreamineCheckBox _cb3 = null!;
166 private Label _lblRbCard = null!;
175 private Panel _radioPanel = null!;
184 private DreamineRadioButton _rb1 = null!;
193 private DreamineRadioButton _rb2 = null!;
202 private DreamineRadioButton _rb3 = null!;
203
204 // ── CheckLed tab ──────────────────────────────────────
213 private TabPage _tabLed = null!;
222 private FlowLayoutPanel _tabLedFlow = null!;
231 private Label _lblLedCard = null!;
240 private DreamineCheckLed _led = null!;
249 private FlowLayoutPanel _ledBtnRow = null!;
258 private DreamineButton _btnToggle = null!;
267 private DreamineButton _btnPulse = null!;
276 private Label _lblCornerCard = null!;
285 private FlowLayoutPanel _cornerRow = null!;
294 private DreamineCheckLed _ledTopLeft = null!;
303 private DreamineCheckLed _ledTopRight = null!;
312 private DreamineCheckLed _ledBottomLeft = null!;
321 private DreamineCheckLed _ledBottomRight = null!;
330 private Label _lblDiameterCard = null!;
339 private FlowLayoutPanel _diameterRow = null!;
348 private DreamineCheckLed _ledD10 = null!;
357 private DreamineCheckLed _ledD16 = null!;
366 private DreamineCheckLed _ledD22 = null!;
375 private DreamineCheckLed _ledD30 = null!;
384 private DreamineCheckLed _ledD42 = null!;
385
386 // ── TextBox tab ───────────────────────────────────────
395 private TabPage _tabText = null!;
404 private FlowLayoutPanel _tabTextFlow = null!;
413 private Label _lblTbCard = null!;
422 private FlowLayoutPanel _tbRow = null!;
431 private DreamineTextBox _tb = null!;
440 private DreamineButton _btnClearTb = null!;
449 private Label _lblTbReadOnlyCard = null!;
458 private DreamineTextBox _tbReadOnly = null!;
467 private Label _lblPbCard = null!;
476 private FlowLayoutPanel _pbRow = null!;
485 private DreaminePasswordBox _pb = null!;
494 private DreamineButton _btnClearPb = null!;
495
496 // ── ComboBox tab ──────────────────────────────────────
505 private TabPage _tabCombo = null!;
514 private FlowLayoutPanel _tabComboFlow = null!;
523 private Label _lblComboCard = null!;
532 private DreamineComboBox _combo = null!;
541 private Label _lblSelected = null!;
550 private Label _lblComboDisabledCard = null!;
559 private DreamineComboBox _comboDisabled = null!;
560
561 // ── DataGrid / ListBox tab ─────────────────────────────
570 private TabPage _tabGrid = null!;
579 private FlowLayoutPanel _tabGridFlow = null!;
588 private Label _lblGridCard = null!;
597 private DreamineDataGrid _grid = null!;
606 private Label _lblListCard = null!;
615 private DreamineListBox _list = null!;
624 private Label _lblLogCard = null!;
633 private DreamineButton _btnLogClick = null!;
642 private DreamineListBox _logList = null!;
643
644 // ── Misc tab ──────────────────────────────────────────
653 private TabPage _tabMisc = null!;
662 private FlowLayoutPanel _tabMiscFlow = null!;
671 private Label _lblExpCard = null!;
680 private DreamineExpander _expander = null!;
689 private Label _lblExpInner = null!;
698 private DataGridViewTextBoxColumn dataGridViewTextBoxColumn1 = null!;
707 private DataGridViewTextBoxColumn dataGridViewTextBoxColumn2 = null!;
716 private DataGridViewTextBoxColumn dataGridViewTextBoxColumn3 = null!;
725 private readonly ControlsViewModel _vm;
726
735 public ControlsPage() : this(new ControlsViewModel(new ControlsEvent())) { }
736
753 public ControlsPage(ControlsViewModel vm)
754 {
755 _vm = vm;
757
758 // ViewModel 초기값 반영
759 _cb1.IsChecked = _vm.Check1;
760 _cb2.IsChecked = _vm.Check2;
761 _cb3.IsChecked = _vm.Check3;
762 _rb1.IsChecked = _vm.SelectedRadio == "Option A";
763 _rb2.IsChecked = _vm.SelectedRadio == "Option B";
764 _rb3.IsChecked = _vm.SelectedRadio == "Option C";
765 _led.IsOn = _vm.LedIsOn;
766 _led.IsPulse = _vm.LedIsPulse;
767 _expander.IsExpanded = _vm.IsExpanded;
768 // 디자이너가 InitializeComponent를 재생성할 때 Content.Controls.Add 같은 비표준 호출을
769 // 지워버리므로, 생성자 쪽에 둬서 디자이너가 다시 열려도 유지되게 한다.
770 _expander.Content.Controls.Add(_lblExpInner);
771 foreach (var item in _vm.FruitItems) _combo.Items.Add(item);
772 foreach (var item in _vm.FruitItems) _comboDisabled.Items.Add(item);
773 if (_comboDisabled.Items.Count > 0) _comboDisabled.SelectedIndex = 0;
774 _combo.SelectedItem = _vm.SelectedFruit;
775 _lblSelected.Text = $"Selected: {_vm.SelectedFruit}";
776 _lblClickCount.Text = $"Clicks: {_vm.ClickCount}";
777
778 // Button tab events
779 _btnClickMe.Click += (_, _) => { _vm.ClickMeCommand.Execute(null); _lblClickCount.Text = $"Clicks: {_vm.ClickCount}"; };
781
782 // CheckBox events
783 _cb1.CheckedChanged += (_, _) => _vm.Check1 = _cb1.IsChecked;
784 _cb2.CheckedChanged += (_, _) => _vm.Check2 = _cb2.IsChecked;
785 _cb3.CheckedChanged += (_, _) => _vm.Check3 = _cb3.IsChecked;
786
787 // RadioButton events
788 _rb1.CheckedChanged += (_, _) => { if (_rb1.IsChecked) _vm.SelectRadioCommand.Execute("Option A"); };
789 _rb2.CheckedChanged += (_, _) => { if (_rb2.IsChecked) _vm.SelectRadioCommand.Execute("Option B"); };
790 _rb3.CheckedChanged += (_, _) => { if (_rb3.IsChecked) _vm.SelectRadioCommand.Execute("Option C"); };
791
792 // LED events
793 _btnToggle.Click += (_, _) => { _vm.ToggleLedCommand.Execute(null); _led.IsOn = _vm.LedIsOn; };
794 _btnPulse.Click += (_, _) => { _vm.TogglePulseCommand.Execute(null); _led.IsPulse = _vm.LedIsPulse; };
795
796 // TextBox events
797 _tb.TextChanged += (_, _) => _vm.TextInput = _tb.Text;
798 _btnClearTb.Click += (_, _) => { _vm.ClearTextCommand.Execute(null); _tb.Text = string.Empty; };
799 _btnClearPb.Click += (_, _) => { _vm.ClearPasswordCommand.Execute(null); _pb.Password = string.Empty; };
800
801 // DreamineVirtualKeyboard — WPF의 vk:DreamineVirtualKeyboardAssist.UseVirtualKeyBoard="True"와 동일한 데모.
802 Dreamine.UI.WinForms.VirtualKeyboard.DreamineVirtualKeyboardAssist.Attach(_tb);
803
804 // ComboBox events
805 _combo.SelectedIndexChanged += (_, _) =>
806 {
807 _vm.SelectedFruit = _combo.SelectedItem?.ToString() ?? string.Empty;
808 _lblSelected.Text = $"Selected: {_vm.SelectedFruit}";
809 };
810
811 // Expander events
812 _expander.ExpandedChanged += (_, _) => _vm.IsExpanded = _expander.IsExpanded;
813
814 // DataGrid / ListBox tab
815 foreach (var row in _vm.GridRows)
816 _grid.Rows.Add(row.No, row.Name, row.Status);
817
818 foreach (var fruit in _vm.FruitItems)
819 _list.Items.Add(fruit);
820 _list.DoubleClick += (_, _) => _vm.ListBoxActivatedCommand.Execute(_list.SelectedItem?.ToString());
821
822 foreach (var entry in _vm.ActivityLog)
823 _logList.Items.Add(entry);
824 _logList.AutoScrollToEnd = true;
825 _btnLogClick.Click += (_, _) =>
826 {
827 _vm.ClickMeCommand.Execute(null);
828 _logList.Items.Clear();
829 foreach (var entry in _vm.ActivityLog)
830 _logList.Items.Add(entry);
831 _logList.NotifyItemAdded();
832 _lblClickCount.Text = $"Clicks: {_vm.ClickCount}";
833 };
834
835 _vm.PropertyChanged += OnPropertyChanged;
836 }
837
847 {
848 var colorRow = new FlowLayoutPanel { AutoSize = true, Margin = new Padding(0, 16, 0, 0) };
849 var colorLabel = MakeCardLabel("기본 버튼 — Background 변형");
850 AddColorButton(colorRow, "Primary", Color.FromArgb(30, 144, 255));
851 AddColorButton(colorRow, "Secondary", Color.FromArgb(45, 74, 110));
852 AddColorButton(colorRow, "Success", Color.FromArgb(27, 122, 62));
853 AddColorButton(colorRow, "Warning", Color.FromArgb(184, 92, 0));
854 AddColorButton(colorRow, "Danger", Color.FromArgb(139, 26, 26));
855
856 var shineLabel = MakeCardLabel("ShineColor — 글로우 효과");
857 var shineRow = new FlowLayoutPanel { AutoSize = true, Margin = new Padding(0, 0, 0, 0) };
858 AddShineButton(shineRow, "Blue Glow", Color.FromArgb(13, 27, 62), Color.FromArgb(30, 144, 255));
859 AddShineButton(shineRow, "Cyan Glow", Color.FromArgb(13, 27, 62), Color.FromArgb(0, 188, 212));
860 AddShineButton(shineRow, "Green Glow", Color.FromArgb(13, 27, 62), Color.FromArgb(76, 175, 80));
861
862 var sizeLabel = MakeCardLabel("크기 변형");
863 var sizeRow = new FlowLayoutPanel { AutoSize = true };
864 AddSizeButton(sizeRow, "XS", 50, 24, 8f);
865 AddSizeButton(sizeRow, "Small", 72, 28, 9f);
866 AddSizeButton(sizeRow, "Medium", 90, 34, 10f);
867 AddSizeButton(sizeRow, "Large", 110, 42, 11f);
868
869 var stateLabel = MakeCardLabel("비활성 / Disabled");
870 var stateRow = new FlowLayoutPanel { AutoSize = true };
871 AddColorButton(stateRow, "Enabled", Color.FromArgb(30, 144, 255));
872 var disabledBtn = AddColorButton(stateRow, "Disabled", Color.FromArgb(30, 144, 255));
873 disabledBtn.Enabled = false;
874
875 _tabButtonFlow.Controls.Add(colorLabel);
876 _tabButtonFlow.Controls.Add(colorRow);
877 _tabButtonFlow.Controls.Add(shineLabel);
878 _tabButtonFlow.Controls.Add(shineRow);
879 _tabButtonFlow.Controls.Add(sizeLabel);
880 _tabButtonFlow.Controls.Add(sizeRow);
881 _tabButtonFlow.Controls.Add(stateLabel);
882 _tabButtonFlow.Controls.Add(stateRow);
883 }
884
909 private static Label MakeCardLabel(string text) => new()
910 {
911 AutoSize = true,
912 Font = new Font("Segoe UI", 10F, FontStyle.Bold),
913 ForeColor = Color.FromArgb(30, 144, 255),
914 Margin = new Padding(0, 16, 0, 4),
915 Text = text
916 };
917
958 private DreamineButton AddColorButton(FlowLayoutPanel row, string text, Color background)
959 {
960 var btn = new DreamineButton
961 {
962 Content = text,
963 BackColor = background,
964 ForeColor = Color.White,
965 Width = 100,
966 Height = 34,
967 CornerRadius = 6,
968 Margin = new Padding(0, 0, 8, 8)
969 };
970 btn.Click += (_, _) => { _vm.ClickMeCommand.Execute(null); _lblClickCount.Text = $"Clicks: {_vm.ClickCount}"; };
971 row.Controls.Add(btn);
972 return btn;
973 }
974
1015 private void AddShineButton(FlowLayoutPanel row, string text, Color background, Color shine)
1016 {
1017 var btn = new DreamineButton
1018 {
1019 Content = text,
1020 BackColor = background,
1021 ShineColor = shine,
1022 ForeColor = Color.White,
1023 Width = 110,
1024 Height = 36,
1025 CornerRadius = 6,
1026 Margin = new Padding(0, 0, 8, 8)
1027 };
1028 btn.Click += (_, _) => { _vm.ClickMeCommand.Execute(null); _lblClickCount.Text = $"Clicks: {_vm.ClickCount}"; };
1029 row.Controls.Add(btn);
1030 }
1031
1040 private const int MaxShowcaseButtonHeight = 42;
1041
1090 private void AddSizeButton(FlowLayoutPanel row, string text, int width, int height, float fontSize)
1091 {
1092 // FlowLayoutPanel은 기본적으로 위쪽 정렬이라, 높이가 다른 버튼들을 그대로 두면
1093 // 줄이 들쭐날쭐해 보인다. 가장 큰 버튼(Large) 기준으로 위쪽 여백을 줘서 아래쪽을 맞춘다.
1094 var topOffset = MaxShowcaseButtonHeight - height;
1095 var btn = new DreamineButton
1096 {
1097 Content = text,
1098 BackColor = Color.FromArgb(30, 144, 255),
1099 ForeColor = Color.White,
1100 Width = width,
1101 Height = height,
1102 Font = new Font("Segoe UI", fontSize),
1103 CornerRadius = 6,
1104 Margin = new Padding(0, topOffset, 8, 0)
1105 };
1106 btn.Click += (_, _) => { _vm.ClickMeCommand.Execute(null); _lblClickCount.Text = $"Clicks: {_vm.ClickCount}"; };
1107 row.Controls.Add(btn);
1108 }
1109
1134 private void OnPropertyChanged(object? sender, PropertyChangedEventArgs e)
1135 {
1136 if (e.PropertyName == nameof(ControlsViewModel.StatusMessage))
1137 _statusLabel.Text = _vm.StatusMessage;
1138 }
1139
1148 private void InitializeComponent()
1149 {
1150 DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle();
1151 DataGridViewCellStyle dataGridViewCellStyle2 = new DataGridViewCellStyle();
1152 DataGridViewCellStyle dataGridViewCellStyle3 = new DataGridViewCellStyle();
1153 _title = new Label();
1154 _tabs = new DreamineTabControl();
1155 _tabButton = new TabPage();
1156 _tabButtonFlow = new FlowLayoutPanel();
1157 _lblButtonCard = new Label();
1158 _btnClickMe = new DreamineButton();
1159 _lblClickCount = new Label();
1160 _tabCheckRadio = new TabPage();
1161 _tabCheckRadioFlow = new FlowLayoutPanel();
1162 _lblCbCard = new Label();
1163 _cb1 = new DreamineCheckBox();
1164 _cb2 = new DreamineCheckBox();
1165 _cb3 = new DreamineCheckBox();
1166 _lblRbCard = new Label();
1167 _radioPanel = new Panel();
1168 _rb1 = new DreamineRadioButton();
1169 _rb2 = new DreamineRadioButton();
1170 _rb3 = new DreamineRadioButton();
1171 _tabLed = new TabPage();
1172 _tabLedFlow = new FlowLayoutPanel();
1173 _lblLedCard = new Label();
1174 _led = new DreamineCheckLed();
1175 _ledBtnRow = new FlowLayoutPanel();
1176 _btnToggle = new DreamineButton();
1177 _btnPulse = new DreamineButton();
1178 _lblCornerCard = new Label();
1179 _cornerRow = new FlowLayoutPanel();
1180 _ledTopLeft = new DreamineCheckLed();
1181 _ledTopRight = new DreamineCheckLed();
1182 _ledBottomLeft = new DreamineCheckLed();
1183 _ledBottomRight = new DreamineCheckLed();
1184 _lblDiameterCard = new Label();
1185 _diameterRow = new FlowLayoutPanel();
1186 _ledD10 = new DreamineCheckLed();
1187 _ledD16 = new DreamineCheckLed();
1188 _ledD22 = new DreamineCheckLed();
1189 _ledD30 = new DreamineCheckLed();
1190 _ledD42 = new DreamineCheckLed();
1191 _tabText = new TabPage();
1192 _tabTextFlow = new FlowLayoutPanel();
1193 _lblTbCard = new Label();
1194 _tbRow = new FlowLayoutPanel();
1195 _tb = new DreamineTextBox();
1196 _btnClearTb = new DreamineButton();
1197 _lblTbReadOnlyCard = new Label();
1198 _tbReadOnly = new DreamineTextBox();
1199 _lblPbCard = new Label();
1200 _pbRow = new FlowLayoutPanel();
1201 _pb = new DreaminePasswordBox();
1202 _btnClearPb = new DreamineButton();
1203 _tabCombo = new TabPage();
1204 _tabComboFlow = new FlowLayoutPanel();
1205 _lblComboCard = new Label();
1206 _combo = new DreamineComboBox();
1207 _lblSelected = new Label();
1208 _lblComboDisabledCard = new Label();
1209 _comboDisabled = new DreamineComboBox();
1210 _tabGrid = new TabPage();
1211 _tabGridFlow = new FlowLayoutPanel();
1212 _lblGridCard = new Label();
1213 _grid = new DreamineDataGrid();
1214 _lblListCard = new Label();
1215 _list = new DreamineListBox();
1216 _lblLogCard = new Label();
1217 _btnLogClick = new DreamineButton();
1218 _logList = new DreamineListBox();
1219 dataGridViewTextBoxColumn1 = new DataGridViewTextBoxColumn();
1220 dataGridViewTextBoxColumn2 = new DataGridViewTextBoxColumn();
1221 dataGridViewTextBoxColumn3 = new DataGridViewTextBoxColumn();
1222 _tabMisc = new TabPage();
1223 _tabMiscFlow = new FlowLayoutPanel();
1224 _lblExpCard = new Label();
1225 _expander = new DreamineExpander();
1226 _lblExpInner = new Label();
1227 _statusLabel = new Label();
1228 _layout = new Panel();
1229 _tabs.SuspendLayout();
1230 _tabButton.SuspendLayout();
1231 _tabButtonFlow.SuspendLayout();
1232 _tabCheckRadio.SuspendLayout();
1233 _tabCheckRadioFlow.SuspendLayout();
1234 _radioPanel.SuspendLayout();
1235 _tabLed.SuspendLayout();
1236 _tabLedFlow.SuspendLayout();
1237 _ledBtnRow.SuspendLayout();
1238 _cornerRow.SuspendLayout();
1239 _diameterRow.SuspendLayout();
1240 _tabText.SuspendLayout();
1241 _tabTextFlow.SuspendLayout();
1242 _tbRow.SuspendLayout();
1243 _pbRow.SuspendLayout();
1244 _tabCombo.SuspendLayout();
1245 _tabComboFlow.SuspendLayout();
1246 _tabGrid.SuspendLayout();
1247 _tabGridFlow.SuspendLayout();
1248 ((ISupportInitialize)_grid).BeginInit();
1249 _tabMisc.SuspendLayout();
1250 _tabMiscFlow.SuspendLayout();
1251 _layout.SuspendLayout();
1252 SuspendLayout();
1253 //
1254 // _title
1255 //
1256 _title.AutoSize = true;
1257 _title.Font = new Font("Segoe UI", 18F, FontStyle.Bold);
1258 _title.ForeColor = Color.White;
1259 _title.Location = new Point(0, 0);
1260 _title.Margin = new Padding(0, 0, 0, 8);
1261 _title.Name = "_title";
1262 _title.Size = new Size(228, 32);
1263 _title.TabIndex = 0;
1264 _title.Text = "Controls Showcase";
1265 //
1266 // _tabs
1267 //
1268 _tabs.Controls.Add(_tabButton);
1269 _tabs.Controls.Add(_tabCheckRadio);
1270 _tabs.Controls.Add(_tabLed);
1271 _tabs.Controls.Add(_tabText);
1272 _tabs.Controls.Add(_tabCombo);
1273 _tabs.Controls.Add(_tabGrid);
1274 _tabs.Controls.Add(_tabMisc);
1275 _tabs.DrawMode = TabDrawMode.OwnerDrawFixed;
1276 _tabs.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
1277 _tabs.ItemSize = new Size(120, 36);
1278 _tabs.Location = new Point(0, 40);
1279 _tabs.Margin = new Padding(0, 0, 0, 8);
1280 _tabs.Name = "_tabs";
1281 _tabs.Padding = new Point(12, 6);
1282 _tabs.SelectedIndex = 0;
1283 _tabs.Size = new Size(887, 420);
1284 _tabs.TabIndex = 1;
1285 //
1286 // _tabButton
1287 //
1288 _tabButton.BackColor = Color.FromArgb(26, 26, 46);
1289 _tabButton.Controls.Add(_tabButtonFlow);
1290 _tabButton.ForeColor = Color.White;
1291 _tabButton.Location = new Point(4, 40);
1292 _tabButton.Name = "_tabButton";
1293 _tabButton.Size = new Size(879, 376);
1294 _tabButton.AutoScroll = true;
1295 _tabButton.TabIndex = 0;
1296 _tabButton.Text = "Button";
1297 //
1298 // _tabButtonFlow
1299 //
1300 _tabButtonFlow.BackColor = Color.FromArgb(26, 26, 46);
1301 _tabButtonFlow.Controls.Add(_lblButtonCard);
1302 _tabButtonFlow.Controls.Add(_btnClickMe);
1303 _tabButtonFlow.Controls.Add(_lblClickCount);
1304 _tabButtonFlow.Dock = DockStyle.Top;
1305 _tabButtonFlow.AutoSize = true;
1306 _tabButtonFlow.FlowDirection = FlowDirection.TopDown;
1307 _tabButtonFlow.Location = new Point(0, 0);
1308 _tabButtonFlow.Name = "_tabButtonFlow";
1309 _tabButtonFlow.Padding = new Padding(16);
1310 _tabButtonFlow.Size = new Size(879, 376);
1311 _tabButtonFlow.TabIndex = 0;
1312 _tabButtonFlow.WrapContents = false;
1313 //
1314 // _lblButtonCard
1315 //
1316 _lblButtonCard.AutoSize = true;
1317 _lblButtonCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
1318 _lblButtonCard.ForeColor = Color.FromArgb(30, 144, 255);
1319 _lblButtonCard.Location = new Point(16, 24);
1320 _lblButtonCard.Margin = new Padding(0, 8, 0, 4);
1321 _lblButtonCard.Name = "_lblButtonCard";
1322 _lblButtonCard.Size = new Size(118, 19);
1323 _lblButtonCard.TabIndex = 0;
1324 _lblButtonCard.Text = "DreamineButton";
1325 //
1326 // _btnClickMe
1327 //
1328 _btnClickMe.BackColor = Color.FromArgb(13, 27, 62);
1329 _btnClickMe.BorderColor = Color.FromArgb(45, 74, 110);
1330 _btnClickMe.Command = null;
1331 _btnClickMe.CommandParameter = null;
1332 _btnClickMe.Content = "Click Me";
1333 _btnClickMe.CornerRadius = 6;
1334 _btnClickMe.Font = new Font("Segoe UI", 10F);
1335 _btnClickMe.ForeColor = Color.White;
1336 _btnClickMe.IsSelected = false;
1337 _btnClickMe.Location = new Point(19, 50);
1338 _btnClickMe.Name = "_btnClickMe";
1339 _btnClickMe.ShineColor = Color.Empty;
1340 _btnClickMe.Size = new Size(140, 40);
1341 _btnClickMe.TabIndex = 1;
1342 //
1343 // _lblClickCount
1344 //
1345 _lblClickCount.AutoSize = true;
1346 _lblClickCount.Font = new Font("Segoe UI", 11F);
1347 _lblClickCount.ForeColor = Color.White;
1348 _lblClickCount.Location = new Point(19, 93);
1349 _lblClickCount.Name = "_lblClickCount";
1350 _lblClickCount.Size = new Size(61, 20);
1351 _lblClickCount.TabIndex = 2;
1352 _lblClickCount.Text = "Clicks: 0";
1353 //
1354 // _tabCheckRadio
1355 //
1356 _tabCheckRadio.BackColor = Color.FromArgb(26, 26, 46);
1357 _tabCheckRadio.Controls.Add(_tabCheckRadioFlow);
1358 _tabCheckRadio.ForeColor = Color.White;
1359 _tabCheckRadio.Location = new Point(4, 40);
1360 _tabCheckRadio.Name = "_tabCheckRadio";
1361 _tabCheckRadio.Size = new Size(672, 376);
1362 _tabCheckRadio.AutoScroll = true;
1363 _tabCheckRadio.TabIndex = 1;
1364 _tabCheckRadio.Text = "CheckBox / Radio";
1365 //
1366 // _tabCheckRadioFlow
1367 //
1368 _tabCheckRadioFlow.BackColor = Color.FromArgb(26, 26, 46);
1369 _tabCheckRadioFlow.Controls.Add(_lblCbCard);
1370 _tabCheckRadioFlow.Controls.Add(_cb1);
1371 _tabCheckRadioFlow.Controls.Add(_cb2);
1372 _tabCheckRadioFlow.Controls.Add(_cb3);
1373 _tabCheckRadioFlow.Controls.Add(_lblRbCard);
1374 _tabCheckRadioFlow.Controls.Add(_radioPanel);
1375 _tabCheckRadioFlow.Dock = DockStyle.Top;
1376 _tabCheckRadioFlow.AutoSize = true;
1377 _tabCheckRadioFlow.FlowDirection = FlowDirection.TopDown;
1378 _tabCheckRadioFlow.Location = new Point(0, 0);
1379 _tabCheckRadioFlow.Name = "_tabCheckRadioFlow";
1380 _tabCheckRadioFlow.Padding = new Padding(16);
1381 _tabCheckRadioFlow.Size = new Size(672, 376);
1382 _tabCheckRadioFlow.TabIndex = 0;
1383 _tabCheckRadioFlow.WrapContents = false;
1384 //
1385 // _lblCbCard
1386 //
1387 _lblCbCard.AutoSize = true;
1388 _lblCbCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
1389 _lblCbCard.ForeColor = Color.FromArgb(30, 144, 255);
1390 _lblCbCard.Location = new Point(16, 24);
1391 _lblCbCard.Margin = new Padding(0, 8, 0, 4);
1392 _lblCbCard.Name = "_lblCbCard";
1393 _lblCbCard.Size = new Size(140, 19);
1394 _lblCbCard.TabIndex = 0;
1395 _lblCbCard.Text = "DreamineCheckBox";
1396 //
1397 // _cb1
1398 //
1399 _cb1.BackColor = Color.Transparent;
1400 _cb1.Content = "Option 1";
1401 _cb1.Font = new Font("Segoe UI", 10F);
1402 _cb1.ForeColor = Color.White;
1403 _cb1.IsChecked = false;
1404 _cb1.Location = new Point(19, 50);
1405 _cb1.Name = "_cb1";
1406 _cb1.Size = new Size(180, 28);
1407 _cb1.TabIndex = 1;
1408 //
1409 // _cb2
1410 //
1411 _cb2.BackColor = Color.Transparent;
1412 _cb2.Content = "Option 2";
1413 _cb2.Font = new Font("Segoe UI", 10F);
1414 _cb2.ForeColor = Color.White;
1415 _cb2.IsChecked = false;
1416 _cb2.Location = new Point(19, 84);
1417 _cb2.Name = "_cb2";
1418 _cb2.Size = new Size(180, 28);
1419 _cb2.TabIndex = 2;
1420 //
1421 // _cb3
1422 //
1423 _cb3.BackColor = Color.Transparent;
1424 _cb3.Content = "Option 3";
1425 _cb3.Font = new Font("Segoe UI", 10F);
1426 _cb3.ForeColor = Color.White;
1427 _cb3.IsChecked = false;
1428 _cb3.Location = new Point(19, 118);
1429 _cb3.Name = "_cb3";
1430 _cb3.Size = new Size(180, 28);
1431 _cb3.TabIndex = 3;
1432 //
1433 // _lblRbCard
1434 //
1435 _lblRbCard.AutoSize = true;
1436 _lblRbCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
1437 _lblRbCard.ForeColor = Color.FromArgb(30, 144, 255);
1438 _lblRbCard.Location = new Point(16, 157);
1439 _lblRbCard.Margin = new Padding(0, 8, 0, 4);
1440 _lblRbCard.Name = "_lblRbCard";
1441 _lblRbCard.Size = new Size(157, 19);
1442 _lblRbCard.TabIndex = 4;
1443 _lblRbCard.Text = "DreamineRadioButton";
1444 //
1445 // _radioPanel
1446 //
1447 _radioPanel.BackColor = Color.FromArgb(15, 30, 58);
1448 _radioPanel.Controls.Add(_rb1);
1449 _radioPanel.Controls.Add(_rb2);
1450 _radioPanel.Controls.Add(_rb3);
1451 _radioPanel.Location = new Point(19, 183);
1452 _radioPanel.Name = "_radioPanel";
1453 _radioPanel.Size = new Size(500, 80);
1454 _radioPanel.TabIndex = 5;
1455 //
1456 // _rb1
1457 //
1458 _rb1.BackColor = Color.Transparent;
1459 _rb1.Content = "Option A";
1460 _rb1.Font = new Font("Segoe UI", 10F);
1461 _rb1.ForeColor = Color.White;
1462 _rb1.GroupName = "demo";
1463 _rb1.IsChecked = false;
1464 _rb1.Location = new Point(0, 0);
1465 _rb1.Name = "_rb1";
1466 _rb1.Size = new Size(160, 28);
1467 _rb1.TabIndex = 0;
1468 //
1469 // _rb2
1470 //
1471 _rb2.BackColor = Color.Transparent;
1472 _rb2.Content = "Option B";
1473 _rb2.Font = new Font("Segoe UI", 10F);
1474 _rb2.ForeColor = Color.White;
1475 _rb2.GroupName = "demo";
1476 _rb2.IsChecked = false;
1477 _rb2.Location = new Point(160, 0);
1478 _rb2.Name = "_rb2";
1479 _rb2.Size = new Size(160, 28);
1480 _rb2.TabIndex = 1;
1481 //
1482 // _rb3
1483 //
1484 _rb3.BackColor = Color.Transparent;
1485 _rb3.Content = "Option C";
1486 _rb3.Font = new Font("Segoe UI", 10F);
1487 _rb3.ForeColor = Color.White;
1488 _rb3.GroupName = "demo";
1489 _rb3.IsChecked = false;
1490 _rb3.Location = new Point(320, 0);
1491 _rb3.Name = "_rb3";
1492 _rb3.Size = new Size(160, 28);
1493 _rb3.TabIndex = 2;
1494 //
1495 // _tabLed
1496 //
1497 _tabLed.BackColor = Color.FromArgb(26, 26, 46);
1498 _tabLed.Controls.Add(_tabLedFlow);
1499 _tabLed.ForeColor = Color.White;
1500 _tabLed.Location = new Point(4, 40);
1501 _tabLed.Name = "_tabLed";
1502 _tabLed.Size = new Size(672, 376);
1503 _tabLed.AutoScroll = true;
1504 _tabLed.TabIndex = 2;
1505 _tabLed.Text = "CheckLed";
1506 //
1507 // _tabLedFlow
1508 //
1509 _tabLedFlow.BackColor = Color.FromArgb(26, 26, 46);
1510 _tabLedFlow.Controls.Add(_lblLedCard);
1511 _tabLedFlow.Controls.Add(_led);
1512 _tabLedFlow.Controls.Add(_ledBtnRow);
1513 _tabLedFlow.Controls.Add(_lblCornerCard);
1514 _tabLedFlow.Controls.Add(_cornerRow);
1515 _tabLedFlow.Controls.Add(_lblDiameterCard);
1516 _tabLedFlow.Controls.Add(_diameterRow);
1517 _tabLedFlow.Dock = DockStyle.Top;
1518 _tabLedFlow.AutoSize = true;
1519 _tabLedFlow.FlowDirection = FlowDirection.TopDown;
1520 _tabLedFlow.Location = new Point(0, 0);
1521 _tabLedFlow.Name = "_tabLedFlow";
1522 _tabLedFlow.Padding = new Padding(16);
1523 _tabLedFlow.Size = new Size(672, 376);
1524 _tabLedFlow.TabIndex = 0;
1525 _tabLedFlow.WrapContents = false;
1526 //
1527 // _lblLedCard
1528 //
1529 _lblLedCard.AutoSize = true;
1530 _lblLedCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
1531 _lblLedCard.ForeColor = Color.FromArgb(30, 144, 255);
1532 _lblLedCard.Location = new Point(16, 24);
1533 _lblLedCard.Margin = new Padding(0, 8, 0, 4);
1534 _lblLedCard.Name = "_lblLedCard";
1535 _lblLedCard.Size = new Size(138, 19);
1536 _lblLedCard.TabIndex = 0;
1537 _lblLedCard.Text = "DreamineCheckLed";
1538 //
1539 // _led
1540 //
1541 _led.BackColor = Color.Transparent;
1542 _led.Corner = LedCorner.TopRight;
1543 _led.Diameter = 16F;
1544 _led.IsOn = true;
1545 _led.IsPulse = false;
1546 _led.Location = new Point(19, 50);
1547 _led.Name = "_led";
1548 _led.Size = new Size(60, 60);
1549 _led.TabIndex = 1;
1550 //
1551 // _ledBtnRow
1552 //
1553 _ledBtnRow.AutoSize = true;
1554 _ledBtnRow.Controls.Add(_btnToggle);
1555 _ledBtnRow.Controls.Add(_btnPulse);
1556 _ledBtnRow.Location = new Point(19, 116);
1557 _ledBtnRow.Name = "_ledBtnRow";
1558 _ledBtnRow.Size = new Size(314, 42);
1559 _ledBtnRow.TabIndex = 2;
1560 //
1561 // _btnToggle
1562 //
1563 _btnToggle.BackColor = Color.FromArgb(13, 27, 62);
1564 _btnToggle.BorderColor = Color.FromArgb(45, 74, 110);
1565 _btnToggle.Command = null;
1566 _btnToggle.CommandParameter = null;
1567 _btnToggle.Content = "Toggle ON/OFF";
1568 _btnToggle.CornerRadius = 6;
1569 _btnToggle.Font = new Font("Segoe UI", 10F);
1570 _btnToggle.ForeColor = Color.White;
1571 _btnToggle.IsSelected = false;
1572 _btnToggle.Location = new Point(0, 0);
1573 _btnToggle.Margin = new Padding(0, 0, 8, 0);
1574 _btnToggle.Name = "_btnToggle";
1575 _btnToggle.ShineColor = Color.Empty;
1576 _btnToggle.Size = new Size(160, 36);
1577 _btnToggle.TabIndex = 0;
1578 //
1579 // _btnPulse
1580 //
1581 _btnPulse.BackColor = Color.FromArgb(13, 27, 62);
1582 _btnPulse.BorderColor = Color.FromArgb(45, 74, 110);
1583 _btnPulse.Command = null;
1584 _btnPulse.CommandParameter = null;
1585 _btnPulse.Content = "Toggle Pulse";
1586 _btnPulse.CornerRadius = 6;
1587 _btnPulse.Font = new Font("Segoe UI", 10F);
1588 _btnPulse.ForeColor = Color.White;
1589 _btnPulse.IsSelected = false;
1590 _btnPulse.Location = new Point(171, 3);
1591 _btnPulse.Name = "_btnPulse";
1592 _btnPulse.ShineColor = Color.Empty;
1593 _btnPulse.Size = new Size(140, 36);
1594 _btnPulse.TabIndex = 1;
1595 //
1596 // _lblCornerCard
1597 //
1598 _lblCornerCard.AutoSize = true;
1599 _lblCornerCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
1600 _lblCornerCard.ForeColor = Color.FromArgb(30, 144, 255);
1601 _lblCornerCard.Margin = new Padding(0, 16, 0, 4);
1602 _lblCornerCard.Name = "_lblCornerCard";
1603 _lblCornerCard.Size = new Size(140, 19);
1604 _lblCornerCard.TabIndex = 3;
1605 _lblCornerCard.Text = "Corner 위치 (4가지)";
1606 //
1607 // _cornerRow
1608 //
1609 _cornerRow.AutoSize = true;
1610 _cornerRow.Controls.Add(_ledTopLeft);
1611 _cornerRow.Controls.Add(_ledTopRight);
1612 _cornerRow.Controls.Add(_ledBottomLeft);
1613 _cornerRow.Controls.Add(_ledBottomRight);
1614 _cornerRow.Name = "_cornerRow";
1615 _cornerRow.Size = new Size(280, 70);
1616 _cornerRow.TabIndex = 4;
1617 //
1618 // _ledTopLeft
1619 //
1620 _ledTopLeft.BackColor = Color.FromArgb(13, 27, 62);
1621 _ledTopLeft.Corner = LedCorner.TopLeft;
1622 _ledTopLeft.Diameter = 16F;
1623 _ledTopLeft.IsOn = true;
1624 _ledTopLeft.Margin = new Padding(0, 0, 8, 0);
1625 _ledTopLeft.Name = "_ledTopLeft";
1626 _ledTopLeft.Size = new Size(60, 60);
1627 _ledTopLeft.TabIndex = 0;
1628 //
1629 // _ledTopRight
1630 //
1631 _ledTopRight.BackColor = Color.FromArgb(13, 27, 62);
1632 _ledTopRight.Corner = LedCorner.TopRight;
1633 _ledTopRight.Diameter = 16F;
1634 _ledTopRight.IsOn = true;
1635 _ledTopRight.Margin = new Padding(0, 0, 8, 0);
1636 _ledTopRight.Name = "_ledTopRight";
1637 _ledTopRight.Size = new Size(60, 60);
1638 _ledTopRight.TabIndex = 1;
1639 //
1640 // _ledBottomLeft
1641 //
1642 _ledBottomLeft.BackColor = Color.FromArgb(13, 27, 62);
1643 _ledBottomLeft.Corner = LedCorner.BottomLeft;
1644 _ledBottomLeft.Diameter = 16F;
1645 _ledBottomLeft.IsOn = true;
1646 _ledBottomLeft.Margin = new Padding(0, 0, 8, 0);
1647 _ledBottomLeft.Name = "_ledBottomLeft";
1648 _ledBottomLeft.Size = new Size(60, 60);
1649 _ledBottomLeft.TabIndex = 2;
1650 //
1651 // _ledBottomRight
1652 //
1653 _ledBottomRight.BackColor = Color.FromArgb(13, 27, 62);
1654 _ledBottomRight.Corner = LedCorner.BottomRight;
1655 _ledBottomRight.Diameter = 16F;
1656 _ledBottomRight.IsOn = false;
1657 _ledBottomRight.Name = "_ledBottomRight";
1658 _ledBottomRight.Size = new Size(60, 60);
1659 _ledBottomRight.TabIndex = 3;
1660 //
1661 // _lblDiameterCard
1662 //
1663 _lblDiameterCard.AutoSize = true;
1664 _lblDiameterCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
1665 _lblDiameterCard.ForeColor = Color.FromArgb(30, 144, 255);
1666 _lblDiameterCard.Margin = new Padding(0, 16, 0, 4);
1667 _lblDiameterCard.Name = "_lblDiameterCard";
1668 _lblDiameterCard.Size = new Size(160, 19);
1669 _lblDiameterCard.TabIndex = 5;
1670 _lblDiameterCard.Text = "Diameter — 크기 변형";
1671 //
1672 // _diameterRow
1673 //
1674 _diameterRow.AutoSize = true;
1675 _diameterRow.Controls.Add(_ledD10);
1676 _diameterRow.Controls.Add(_ledD16);
1677 _diameterRow.Controls.Add(_ledD22);
1678 _diameterRow.Controls.Add(_ledD30);
1679 _diameterRow.Controls.Add(_ledD42);
1680 _diameterRow.Name = "_diameterRow";
1681 _diameterRow.Size = new Size(280, 50);
1682 _diameterRow.TabIndex = 6;
1683 //
1684 // _ledD10
1685 //
1686 _ledD10.BackColor = Color.Transparent;
1687 _ledD10.Diameter = 10F;
1688 _ledD10.IsOn = true;
1689 _ledD10.Margin = new Padding(0, 0, 14, 0);
1690 _ledD10.Name = "_ledD10";
1691 _ledD10.Size = new Size(22, 22);
1692 _ledD10.TabIndex = 0;
1693 //
1694 // _ledD16
1695 //
1696 _ledD16.BackColor = Color.Transparent;
1697 _ledD16.Diameter = 16F;
1698 _ledD16.IsOn = true;
1699 _ledD16.Margin = new Padding(0, 0, 14, 0);
1700 _ledD16.Name = "_ledD16";
1701 _ledD16.Size = new Size(28, 28);
1702 _ledD16.TabIndex = 1;
1703 //
1704 // _ledD22
1705 //
1706 _ledD22.BackColor = Color.Transparent;
1707 _ledD22.Diameter = 22F;
1708 _ledD22.IsOn = true;
1709 _ledD22.Margin = new Padding(0, 0, 14, 0);
1710 _ledD22.Name = "_ledD22";
1711 _ledD22.Size = new Size(34, 34);
1712 _ledD22.TabIndex = 2;
1713 //
1714 // _ledD30
1715 //
1716 _ledD30.BackColor = Color.Transparent;
1717 _ledD30.Diameter = 30F;
1718 _ledD30.IsOn = true;
1719 _ledD30.Margin = new Padding(0, 0, 14, 0);
1720 _ledD30.Name = "_ledD30";
1721 _ledD30.Size = new Size(42, 42);
1722 _ledD30.TabIndex = 3;
1723 //
1724 // _ledD42
1725 //
1726 _ledD42.BackColor = Color.Transparent;
1727 _ledD42.Diameter = 42F;
1728 _ledD42.IsOn = true;
1729 _ledD42.Name = "_ledD42";
1730 _ledD42.Size = new Size(54, 54);
1731 _ledD42.TabIndex = 4;
1732 //
1733 // _tabText
1734 //
1735 _tabText.BackColor = Color.FromArgb(26, 26, 46);
1736 _tabText.Controls.Add(_tabTextFlow);
1737 _tabText.ForeColor = Color.White;
1738 _tabText.Location = new Point(4, 40);
1739 _tabText.Name = "_tabText";
1740 _tabText.Size = new Size(672, 376);
1741 _tabText.AutoScroll = true;
1742 _tabText.TabIndex = 3;
1743 _tabText.Text = "TextBox";
1744 //
1745 // _tabTextFlow
1746 //
1747 _tabTextFlow.BackColor = Color.FromArgb(26, 26, 46);
1748 _tabTextFlow.Controls.Add(_lblTbCard);
1749 _tabTextFlow.Controls.Add(_tbRow);
1750 _tabTextFlow.Controls.Add(_lblTbReadOnlyCard);
1751 _tabTextFlow.Controls.Add(_tbReadOnly);
1752 _tabTextFlow.Controls.Add(_lblPbCard);
1753 _tabTextFlow.Controls.Add(_pbRow);
1754 _tabTextFlow.Dock = DockStyle.Top;
1755 _tabTextFlow.AutoSize = true;
1756 _tabTextFlow.FlowDirection = FlowDirection.TopDown;
1757 _tabTextFlow.Location = new Point(0, 0);
1758 _tabTextFlow.Name = "_tabTextFlow";
1759 _tabTextFlow.Padding = new Padding(16);
1760 _tabTextFlow.Size = new Size(672, 376);
1761 _tabTextFlow.TabIndex = 0;
1762 _tabTextFlow.WrapContents = false;
1763 //
1764 // _lblTbCard
1765 //
1766 _lblTbCard.AutoSize = true;
1767 _lblTbCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
1768 _lblTbCard.ForeColor = Color.FromArgb(30, 144, 255);
1769 _lblTbCard.Location = new Point(16, 24);
1770 _lblTbCard.Margin = new Padding(0, 8, 0, 4);
1771 _lblTbCard.Name = "_lblTbCard";
1772 _lblTbCard.Size = new Size(128, 19);
1773 _lblTbCard.TabIndex = 0;
1774 _lblTbCard.Text = "DreamineTextBox";
1775 //
1776 // _tbRow
1777 //
1778 _tbRow.AutoSize = true;
1779 _tbRow.Controls.Add(_tb);
1780 _tbRow.Controls.Add(_btnClearTb);
1781 _tbRow.Location = new Point(19, 50);
1782 _tbRow.Name = "_tbRow";
1783 _tbRow.Size = new Size(454, 42);
1784 _tbRow.TabIndex = 1;
1785 //
1786 // _tb
1787 //
1788 _tb.BackColor = Color.FromArgb(22, 32, 64);
1789 _tb.Font = new Font("Segoe UI", 10F);
1790 _tb.ForeColor = Color.White;
1791 _tb.Hint = "클릭하면 가상 키보드가 열립니다…";
1792 _tb.IsReadOnly = false;
1793 _tb.Location = new Point(3, 3);
1794 _tb.Name = "_tb";
1795 _tb.Padding = new Padding(2);
1796 _tb.Size = new Size(360, 36);
1797 _tb.TabIndex = 0;
1798 //
1799 // _btnClearTb
1800 //
1801 _btnClearTb.BackColor = Color.FromArgb(13, 27, 62);
1802 _btnClearTb.BorderColor = Color.FromArgb(45, 74, 110);
1803 _btnClearTb.Command = null;
1804 _btnClearTb.CommandParameter = null;
1805 _btnClearTb.Content = "Clear";
1806 _btnClearTb.CornerRadius = 6;
1807 _btnClearTb.Font = new Font("Segoe UI", 10F);
1808 _btnClearTb.ForeColor = Color.White;
1809 _btnClearTb.IsSelected = false;
1810 _btnClearTb.Location = new Point(374, 0);
1811 _btnClearTb.Margin = new Padding(8, 0, 0, 0);
1812 _btnClearTb.Name = "_btnClearTb";
1813 _btnClearTb.ShineColor = Color.Empty;
1814 _btnClearTb.Size = new Size(80, 36);
1815 _btnClearTb.TabIndex = 1;
1816 //
1817 // _lblTbReadOnlyCard
1818 //
1819 _lblTbReadOnlyCard.AutoSize = true;
1820 _lblTbReadOnlyCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
1821 _lblTbReadOnlyCard.ForeColor = Color.FromArgb(30, 144, 255);
1822 _lblTbReadOnlyCard.Margin = new Padding(0, 16, 0, 4);
1823 _lblTbReadOnlyCard.Name = "_lblTbReadOnlyCard";
1824 _lblTbReadOnlyCard.Size = new Size(220, 19);
1825 _lblTbReadOnlyCard.TabIndex = 4;
1826 _lblTbReadOnlyCard.Text = "DreamineTextBox — 읽기 전용";
1827 //
1828 // _tbReadOnly
1829 //
1830 _tbReadOnly.BackColor = Color.FromArgb(10, 21, 37);
1831 _tbReadOnly.Font = new Font("Segoe UI", 10F);
1832 _tbReadOnly.ForeColor = Color.FromArgb(136, 153, 170);
1833 _tbReadOnly.IsReadOnly = true;
1834 _tbReadOnly.Name = "_tbReadOnly";
1835 _tbReadOnly.Size = new Size(360, 36);
1836 _tbReadOnly.TabIndex = 5;
1837 _tbReadOnly.Text = "이 텍스트는 수정할 수 없습니다.";
1838 //
1839 // _lblPbCard
1840 //
1841 _lblPbCard.AutoSize = true;
1842 _lblPbCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
1843 _lblPbCard.ForeColor = Color.FromArgb(30, 144, 255);
1844 _lblPbCard.Location = new Point(16, 103);
1845 _lblPbCard.Margin = new Padding(0, 8, 0, 4);
1846 _lblPbCard.Name = "_lblPbCard";
1847 _lblPbCard.Size = new Size(164, 19);
1848 _lblPbCard.TabIndex = 2;
1849 _lblPbCard.Text = "DreaminePasswordBox";
1850 //
1851 // _pbRow
1852 //
1853 _pbRow.AutoSize = true;
1854 _pbRow.Controls.Add(_pb);
1855 _pbRow.Controls.Add(_btnClearPb);
1856 _pbRow.Location = new Point(19, 129);
1857 _pbRow.Name = "_pbRow";
1858 _pbRow.Size = new Size(454, 42);
1859 _pbRow.TabIndex = 3;
1860 //
1861 // _pb
1862 //
1863 _pb.BackColor = Color.FromArgb(22, 32, 64);
1864 _pb.Font = new Font("Segoe UI", 10F);
1865 _pb.ForeColor = Color.White;
1866 _pb.Hint = "비밀번호 입력…";
1867 _pb.Location = new Point(3, 3);
1868 _pb.Name = "_pb";
1869 _pb.Password = "";
1870 _pb.Size = new Size(360, 36);
1871 _pb.TabIndex = 0;
1872 //
1873 // _btnClearPb
1874 //
1875 _btnClearPb.BackColor = Color.FromArgb(13, 27, 62);
1876 _btnClearPb.BorderColor = Color.FromArgb(45, 74, 110);
1877 _btnClearPb.Command = null;
1878 _btnClearPb.CommandParameter = null;
1879 _btnClearPb.Content = "Clear";
1880 _btnClearPb.CornerRadius = 6;
1881 _btnClearPb.Font = new Font("Segoe UI", 10F);
1882 _btnClearPb.ForeColor = Color.White;
1883 _btnClearPb.IsSelected = false;
1884 _btnClearPb.Location = new Point(374, 0);
1885 _btnClearPb.Margin = new Padding(8, 0, 0, 0);
1886 _btnClearPb.Name = "_btnClearPb";
1887 _btnClearPb.ShineColor = Color.Empty;
1888 _btnClearPb.Size = new Size(80, 36);
1889 _btnClearPb.TabIndex = 1;
1890 //
1891 // _tabCombo
1892 //
1893 _tabCombo.BackColor = Color.FromArgb(26, 26, 46);
1894 _tabCombo.Controls.Add(_tabComboFlow);
1895 _tabCombo.ForeColor = Color.White;
1896 _tabCombo.Location = new Point(4, 40);
1897 _tabCombo.Name = "_tabCombo";
1898 _tabCombo.Size = new Size(672, 376);
1899 _tabCombo.AutoScroll = true;
1900 _tabCombo.TabIndex = 4;
1901 _tabCombo.Text = "ComboBox";
1902 //
1903 // _tabComboFlow
1904 //
1905 _tabComboFlow.BackColor = Color.FromArgb(26, 26, 46);
1906 _tabComboFlow.Controls.Add(_lblComboCard);
1907 _tabComboFlow.Controls.Add(_combo);
1908 _tabComboFlow.Controls.Add(_lblSelected);
1910 _tabComboFlow.Controls.Add(_comboDisabled);
1911 _tabComboFlow.Dock = DockStyle.Top;
1912 _tabComboFlow.AutoSize = true;
1913 _tabComboFlow.FlowDirection = FlowDirection.TopDown;
1914 _tabComboFlow.Location = new Point(0, 0);
1915 _tabComboFlow.Name = "_tabComboFlow";
1916 _tabComboFlow.Padding = new Padding(16);
1917 _tabComboFlow.Size = new Size(672, 376);
1918 _tabComboFlow.TabIndex = 0;
1919 _tabComboFlow.WrapContents = false;
1920 //
1921 // _lblComboCard
1922 //
1923 _lblComboCard.AutoSize = true;
1924 _lblComboCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
1925 _lblComboCard.ForeColor = Color.FromArgb(30, 144, 255);
1926 _lblComboCard.Location = new Point(16, 24);
1927 _lblComboCard.Margin = new Padding(0, 8, 0, 4);
1928 _lblComboCard.Name = "_lblComboCard";
1929 _lblComboCard.Size = new Size(149, 19);
1930 _lblComboCard.TabIndex = 0;
1931 _lblComboCard.Text = "DreamineComboBox";
1932 //
1933 // _combo
1934 //
1935 _combo.BackColor = Color.FromArgb(22, 32, 64);
1936 _combo.Font = new Font("Segoe UI", 10F);
1937 _combo.ForeColor = Color.White;
1938 _combo.Location = new Point(19, 50);
1939 _combo.Name = "_combo";
1940 _combo.SelectedIndex = -1;
1941 _combo.SelectedItem = null;
1942 _combo.Size = new Size(240, 36);
1943 _combo.TabIndex = 1;
1944 //
1945 // _lblSelected
1946 //
1947 _lblSelected.AutoSize = true;
1948 _lblSelected.Font = new Font("Segoe UI", 11F);
1949 _lblSelected.ForeColor = Color.White;
1950 _lblSelected.Location = new Point(19, 89);
1951 _lblSelected.Name = "_lblSelected";
1952 _lblSelected.Size = new Size(88, 20);
1953 _lblSelected.TabIndex = 2;
1954 _lblSelected.Text = "Selected: —";
1955 //
1956 // _lblComboDisabledCard
1957 //
1958 _lblComboDisabledCard.AutoSize = true;
1959 _lblComboDisabledCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
1960 _lblComboDisabledCard.ForeColor = Color.FromArgb(30, 144, 255);
1961 _lblComboDisabledCard.Margin = new Padding(0, 16, 0, 4);
1962 _lblComboDisabledCard.Name = "_lblComboDisabledCard";
1963 _lblComboDisabledCard.Size = new Size(200, 19);
1964 _lblComboDisabledCard.TabIndex = 3;
1965 _lblComboDisabledCard.Text = "IsEnabled=False — 비활성 상태";
1966 //
1967 // _comboDisabled
1968 //
1969 _comboDisabled.BackColor = Color.FromArgb(10, 21, 37);
1970 _comboDisabled.Enabled = false;
1971 _comboDisabled.Font = new Font("Segoe UI", 10F);
1972 _comboDisabled.ForeColor = Color.FromArgb(136, 153, 170);
1973 _comboDisabled.Name = "_comboDisabled";
1974 _comboDisabled.Size = new Size(240, 36);
1975 _comboDisabled.TabIndex = 4;
1976 //
1977 // _tabGrid
1978 //
1979 _tabGrid.BackColor = Color.FromArgb(26, 26, 46);
1980 _tabGrid.Controls.Add(_tabGridFlow);
1981 _tabGrid.ForeColor = Color.White;
1982 _tabGrid.Location = new Point(4, 40);
1983 _tabGrid.Name = "_tabGrid";
1984 _tabGrid.Size = new Size(672, 376);
1985 _tabGrid.AutoScroll = true;
1986 _tabGrid.TabIndex = 5;
1987 _tabGrid.Text = "DataGrid / ListBox";
1988 //
1989 // _tabGridFlow
1990 //
1991 _tabGridFlow.BackColor = Color.FromArgb(26, 26, 46);
1992 _tabGridFlow.Controls.Add(_lblGridCard);
1993 _tabGridFlow.Controls.Add(_grid);
1994 _tabGridFlow.Controls.Add(_lblListCard);
1995 _tabGridFlow.Controls.Add(_list);
1996 _tabGridFlow.Controls.Add(_lblLogCard);
1997 _tabGridFlow.Controls.Add(_btnLogClick);
1998 _tabGridFlow.Controls.Add(_logList);
1999 _tabGridFlow.Dock = DockStyle.Top;
2000 _tabGridFlow.AutoSize = true;
2001 _tabGridFlow.FlowDirection = FlowDirection.TopDown;
2002 _tabGridFlow.Location = new Point(0, 0);
2003 _tabGridFlow.Name = "_tabGridFlow";
2004 _tabGridFlow.Padding = new Padding(16);
2005 _tabGridFlow.Size = new Size(672, 376);
2006 _tabGridFlow.TabIndex = 0;
2007 _tabGridFlow.WrapContents = false;
2008 //
2009 // _lblGridCard
2010 //
2011 _lblGridCard.AutoSize = true;
2012 _lblGridCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
2013 _lblGridCard.ForeColor = Color.FromArgb(30, 144, 255);
2014 _lblGridCard.Location = new Point(16, 24);
2015 _lblGridCard.Margin = new Padding(0, 8, 0, 4);
2016 _lblGridCard.Name = "_lblGridCard";
2017 _lblGridCard.Size = new Size(134, 19);
2018 _lblGridCard.TabIndex = 0;
2019 _lblGridCard.Text = "DreamineDataGrid + EnableClickToDeselect";
2020 //
2021 // _grid
2022 //
2023 _grid.AllowUserToAddRows = false;
2024 _grid.AllowUserToDeleteRows = false;
2025 _grid.AllowUserToResizeRows = false;
2026 dataGridViewCellStyle1.BackColor = Color.FromArgb(15, 30, 58);
2027 dataGridViewCellStyle1.ForeColor = Color.White;
2028 dataGridViewCellStyle1.SelectionBackColor = Color.FromArgb(30, 144, 255);
2029 dataGridViewCellStyle1.SelectionForeColor = Color.White;
2030 _grid.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
2031 _grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
2032 _grid.BackgroundColor = Color.FromArgb(22, 32, 64);
2033 _grid.BorderStyle = BorderStyle.None;
2034 _grid.CellBorderStyle = DataGridViewCellBorderStyle.SingleHorizontal;
2035 dataGridViewCellStyle2.Alignment = DataGridViewContentAlignment.MiddleLeft;
2036 dataGridViewCellStyle2.BackColor = Color.FromArgb(13, 27, 62);
2037 dataGridViewCellStyle2.Font = new Font("Segoe UI", 9.5F, FontStyle.Bold);
2038 dataGridViewCellStyle2.ForeColor = Color.White;
2039 dataGridViewCellStyle2.SelectionBackColor = Color.FromArgb(13, 27, 62);
2040 dataGridViewCellStyle2.SelectionForeColor = SystemColors.HighlightText;
2041 dataGridViewCellStyle2.WrapMode = DataGridViewTriState.True;
2042 _grid.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
2043 _grid.ColumnHeadersHeight = 32;
2044 _grid.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
2045 _grid.Columns.AddRange(new DataGridViewColumn[] { dataGridViewTextBoxColumn1, dataGridViewTextBoxColumn2, dataGridViewTextBoxColumn3 });
2046 dataGridViewCellStyle3.Alignment = DataGridViewContentAlignment.MiddleLeft;
2047 dataGridViewCellStyle3.BackColor = Color.FromArgb(22, 32, 64);
2048 dataGridViewCellStyle3.Font = new Font("Segoe UI", 9.5F);
2049 dataGridViewCellStyle3.ForeColor = Color.White;
2050 dataGridViewCellStyle3.SelectionBackColor = Color.FromArgb(30, 144, 255);
2051 dataGridViewCellStyle3.SelectionForeColor = Color.White;
2052 dataGridViewCellStyle3.WrapMode = DataGridViewTriState.False;
2053 _grid.DefaultCellStyle = dataGridViewCellStyle3;
2054 _grid.EnableClickToDeselect = true;
2055 _grid.EnableHeadersVisualStyles = false;
2056 _grid.Font = new Font("Segoe UI", 9.5F);
2057 _grid.GridColor = Color.FromArgb(45, 74, 110);
2058 _grid.Location = new Point(16, 47);
2059 _grid.Margin = new Padding(0, 0, 0, 16);
2060 _grid.MultiSelect = false;
2061 _grid.Name = "_grid";
2062 _grid.ReadOnly = true;
2063 _grid.RowHeadersVisible = false;
2064 _grid.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
2065 _grid.Size = new Size(560, 150);
2066 _grid.TabIndex = 1;
2067 //
2068 // _lblListCard
2069 //
2070 _lblListCard.AutoSize = true;
2071 _lblListCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
2072 _lblListCard.ForeColor = Color.FromArgb(30, 144, 255);
2073 _lblListCard.Location = new Point(16, 213);
2074 _lblListCard.Margin = new Padding(0, 0, 0, 4);
2075 _lblListCard.Name = "_lblListCard";
2076 _lblListCard.Size = new Size(264, 19);
2077 _lblListCard.TabIndex = 2;
2078 _lblListCard.Text = "DreamineListBox — 더블클릭 시 활성화";
2079 //
2080 // _list
2081 //
2082 _list.AutoScrollToEnd = false;
2083 _list.BackColor = Color.FromArgb(22, 32, 64);
2084 _list.DataSource = null;
2085 _list.Font = new Font("Segoe UI", 10F);
2086 _list.ForeColor = Color.White;
2087 _list.Location = new Point(16, 236);
2088 _list.Margin = new Padding(0, 0, 0, 16);
2089 _list.Name = "_list";
2090 _list.Padding = new Padding(2);
2091 _list.SelectedIndex = -1;
2092 _list.SelectedItem = null;
2093 _list.Size = new Size(300, 100);
2094 _list.TabIndex = 3;
2095 //
2096 // _lblLogCard
2097 //
2098 _lblLogCard.AutoSize = true;
2099 _lblLogCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
2100 _lblLogCard.ForeColor = Color.FromArgb(30, 144, 255);
2101 _lblLogCard.Location = new Point(16, 352);
2102 _lblLogCard.Margin = new Padding(0, 0, 0, 4);
2103 _lblLogCard.Name = "_lblLogCard";
2104 _lblLogCard.Size = new Size(381, 19);
2105 _lblLogCard.TabIndex = 4;
2106 _lblLogCard.Text = "AutoScrollToEnd — 클릭마다 로그가 추가되며 자동 스크롤";
2107 //
2108 // _btnLogClick
2109 //
2110 _btnLogClick.BackColor = Color.FromArgb(13, 27, 62);
2111 _btnLogClick.BorderColor = Color.FromArgb(45, 74, 110);
2112 _btnLogClick.Command = null;
2113 _btnLogClick.CommandParameter = null;
2114 _btnLogClick.Content = "Click Me";
2115 _btnLogClick.CornerRadius = 6;
2116 _btnLogClick.Font = new Font("Segoe UI", 10F);
2117 _btnLogClick.ForeColor = Color.White;
2118 _btnLogClick.IsSelected = false;
2119 _btnLogClick.Location = new Point(16, 375);
2120 _btnLogClick.Margin = new Padding(0, 0, 0, 8);
2121 _btnLogClick.Name = "_btnLogClick";
2122 _btnLogClick.ShineColor = Color.Empty;
2123 _btnLogClick.Size = new Size(120, 36);
2124 _btnLogClick.TabIndex = 5;
2125 //
2126 // _logList
2127 //
2128 _logList.AutoScrollToEnd = false;
2129 _logList.BackColor = Color.FromArgb(22, 32, 64);
2130 _logList.DataSource = null;
2131 _logList.Font = new Font("Segoe UI", 10F);
2132 _logList.ForeColor = Color.White;
2133 _logList.Location = new Point(19, 422);
2134 _logList.Name = "_logList";
2135 _logList.Padding = new Padding(2);
2136 _logList.SelectedIndex = -1;
2137 _logList.SelectedItem = null;
2138 _logList.Size = new Size(560, 100);
2139 _logList.TabIndex = 6;
2140 //
2141 // dataGridViewTextBoxColumn1
2142 //
2143 dataGridViewTextBoxColumn1.HeaderText = "No";
2144 dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1";
2145 dataGridViewTextBoxColumn1.ReadOnly = true;
2146 //
2147 // dataGridViewTextBoxColumn2
2148 //
2149 dataGridViewTextBoxColumn2.HeaderText = "Name";
2150 dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2";
2151 dataGridViewTextBoxColumn2.ReadOnly = true;
2152 //
2153 // dataGridViewTextBoxColumn3
2154 //
2155 dataGridViewTextBoxColumn3.HeaderText = "Status";
2156 dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3";
2157 dataGridViewTextBoxColumn3.ReadOnly = true;
2158 //
2159 // _tabMisc
2160 //
2161 _tabMisc.BackColor = Color.FromArgb(26, 26, 46);
2162 _tabMisc.Controls.Add(_tabMiscFlow);
2163 _tabMisc.ForeColor = Color.White;
2164 _tabMisc.Location = new Point(4, 40);
2165 _tabMisc.Name = "_tabMisc";
2166 _tabMisc.Size = new Size(672, 376);
2167 _tabMisc.AutoScroll = true;
2168 _tabMisc.TabIndex = 5;
2169 _tabMisc.Text = "Misc";
2170 //
2171 // _tabMiscFlow
2172 //
2173 _tabMiscFlow.BackColor = Color.FromArgb(26, 26, 46);
2174 _tabMiscFlow.Controls.Add(_lblExpCard);
2175 _tabMiscFlow.Controls.Add(_expander);
2176 _tabMiscFlow.Dock = DockStyle.Top;
2177 _tabMiscFlow.AutoSize = true;
2178 _tabMiscFlow.FlowDirection = FlowDirection.TopDown;
2179 _tabMiscFlow.Location = new Point(0, 0);
2180 _tabMiscFlow.Name = "_tabMiscFlow";
2181 _tabMiscFlow.Padding = new Padding(16);
2182 _tabMiscFlow.Size = new Size(672, 376);
2183 _tabMiscFlow.TabIndex = 0;
2184 _tabMiscFlow.WrapContents = false;
2185 //
2186 // _lblExpCard
2187 //
2188 _lblExpCard.AutoSize = true;
2189 _lblExpCard.Font = new Font("Segoe UI", 10F, FontStyle.Bold);
2190 _lblExpCard.ForeColor = Color.FromArgb(30, 144, 255);
2191 _lblExpCard.Location = new Point(16, 24);
2192 _lblExpCard.Margin = new Padding(0, 8, 0, 4);
2193 _lblExpCard.Name = "_lblExpCard";
2194 _lblExpCard.Size = new Size(137, 19);
2195 _lblExpCard.TabIndex = 0;
2196 _lblExpCard.Text = "DreamineExpander";
2197 //
2198 // _expander
2199 //
2200 _expander.BackColor = Color.FromArgb(15, 30, 58);
2201 _expander.Font = new Font("Segoe UI", 10F);
2202 _expander.ForeColor = Color.White;
2203 _expander.Header = "Expander 섹션";
2204 _expander.IsExpanded = true;
2205 _expander.Location = new Point(19, 50);
2206 _expander.Name = "_expander";
2207 _expander.Size = new Size(500, 120);
2208 _expander.TabIndex = 1;
2209 //
2210 // _lblExpInner
2211 //
2212 _lblExpInner.AutoSize = true;
2213 _lblExpInner.Font = new Font("Segoe UI", 9F);
2214 _lblExpInner.ForeColor = Color.White;
2215 _lblExpInner.Location = new Point(12, 12);
2216 _lblExpInner.Margin = new Padding(12);
2217 _lblExpInner.Name = "_lblExpInner";
2218 _lblExpInner.Size = new Size(244, 15);
2219 _lblExpInner.TabIndex = 0;
2220 _lblExpInner.Text = "이 안에 어떤 컨트롤이든 배치할 수 있습니다.";
2221 //
2222 // _statusLabel
2223 //
2224 _statusLabel.AutoSize = true;
2225 _statusLabel.Dock = DockStyle.Bottom;
2226 _statusLabel.Font = new Font("Segoe UI", 9F);
2227 _statusLabel.ForeColor = Color.FromArgb(136, 153, 170);
2228 _statusLabel.Margin = new Padding(0, 8, 0, 0);
2229 _statusLabel.Name = "_statusLabel";
2230 _statusLabel.Padding = new Padding(0, 4, 0, 0);
2231 _statusLabel.Size = new Size(57, 15);
2232 _statusLabel.TabIndex = 2;
2233 _statusLabel.Text = "Status: —";
2234 //
2235 // _layout
2236 //
2237 // Panel + Dock 조합으로 바꿔서, 창 크기가 커지면 _tabs(Fill)도 같이 늘어나게 한다.
2238 // (이전엔 FlowLayoutPanel이라 _tabs 크기가 고정값으로 굳어 있어서 창만 커지고
2239 // 내용은 그대로인 채 빈 공간만 늘어났다.)
2240 _title.Dock = DockStyle.Top;
2241 _tabs.Dock = DockStyle.Fill;
2242 // WinForms는 "나중에 추가된 컨트롤이 먼저 도킹된다" — Fill을 가장 먼저 추가해야
2243 // Top/Bottom이 나중에(즉, 먼저 처리되어) 자기 영역을 확보하고 남은 공간을 Fill이 채운다.
2244 _layout.Controls.Add(_tabs);
2245 _layout.Controls.Add(_title);
2246 _layout.Controls.Add(_statusLabel);
2247 _layout.Dock = DockStyle.Fill;
2248 _layout.Name = "_layout";
2249 _layout.TabIndex = 0;
2250 //
2251 // ControlsPage
2252 //
2253 BackColor = Color.FromArgb(26, 26, 46);
2254 Controls.Add(_layout);
2255 Name = "ControlsPage";
2256 Padding = new Padding(16);
2257 Size = new Size(1181, 1273);
2258 _tabs.ResumeLayout(false);
2259 _tabButton.ResumeLayout(false);
2260 _tabButtonFlow.ResumeLayout(false);
2261 _tabButtonFlow.PerformLayout();
2262 _tabCheckRadio.ResumeLayout(false);
2263 _tabCheckRadioFlow.ResumeLayout(false);
2264 _tabCheckRadioFlow.PerformLayout();
2265 _radioPanel.ResumeLayout(false);
2266 _tabLed.ResumeLayout(false);
2267 _tabLedFlow.ResumeLayout(false);
2268 _tabLedFlow.PerformLayout();
2269 _ledBtnRow.ResumeLayout(false);
2270 _cornerRow.ResumeLayout(false);
2271 _diameterRow.ResumeLayout(false);
2272 _tabText.ResumeLayout(false);
2273 _tabTextFlow.ResumeLayout(false);
2274 _tabTextFlow.PerformLayout();
2275 _tbRow.ResumeLayout(false);
2276 _pbRow.ResumeLayout(false);
2277 _tabCombo.ResumeLayout(false);
2278 _tabComboFlow.ResumeLayout(false);
2279 _tabComboFlow.PerformLayout();
2280 _tabGrid.ResumeLayout(false);
2281 _tabGridFlow.ResumeLayout(false);
2282 _tabGridFlow.PerformLayout();
2283 ((ISupportInitialize)_grid).EndInit();
2284 _tabMisc.ResumeLayout(false);
2285 _tabMiscFlow.ResumeLayout(false);
2286 _tabMiscFlow.PerformLayout();
2287 _layout.ResumeLayout(false);
2288 _layout.PerformLayout();
2289 ResumeLayout(false);
2290 PerformLayout();
2291 }
2292
2309 protected override void Dispose(bool disposing)
2310 {
2311 if (disposing) _vm.PropertyChanged -= OnPropertyChanged;
2312 base.Dispose(disposing);
2313 }
2314}
void OnPropertyChanged(object? sender, PropertyChangedEventArgs e)
static Label MakeCardLabel(string text)
void AddSizeButton(FlowLayoutPanel row, string text, int width, int height, float fontSize)
DataGridViewTextBoxColumn dataGridViewTextBoxColumn1
DreamineButton AddColorButton(FlowLayoutPanel row, string text, Color background)
DataGridViewTextBoxColumn dataGridViewTextBoxColumn3
override void Dispose(bool disposing)
void AddShineButton(FlowLayoutPanel row, string text, Color background, Color shine)
DataGridViewTextBoxColumn dataGridViewTextBoxColumn2