Forge
csharpdeeb25a2
1using Avalonia;
2using Avalonia.Controls;
3using Avalonia.Layout;
4using Avalonia.Media;
5
6namespace CascadeIDE.Views;
7
8/// <summary>Модальное окно ввода PID для attach (без XAML — как остальные простые диалоги MainWindow).</summary>
9internal static class AttachProcessPidDialog
10{
11 public static async Task<int?> ShowAsync(Window owner)
12 {
13 var dialog = new Window
14 {
15 Title = "Присоединиться к процессу",
16 Width = 420,
17 Height = 160,
18 CanResize = false,
19 WindowStartupLocation = WindowStartupLocation.CenterOwner
20 };
21
22 var box = new TextBox { PlaceholderText = "PID (целое число)", Margin = new Thickness(0, 0, 0, 8) };
23 int? result = null;
24
25 var ok = new Button { Content = "OK", MinWidth = 90 };
26 var cancel = new Button { Content = "Отмена", MinWidth = 90 };
27 ok.Click += (_, _) =>
28 {
29 if (int.TryParse(box.Text?.Trim(), out var pid) && pid > 0)
30 result = pid;
31 dialog.Close();
32 };
33 cancel.Click += (_, _) => dialog.Close();
34
35 dialog.Content = new StackPanel
36 {
37 Margin = new Thickness(16),
38 Spacing = 12,
39 Children =
40 {
41 new TextBlock { Text = "Введите PID процесса .NET:", TextWrapping = TextWrapping.Wrap },
42 box,
43 new StackPanel
44 {
45 Orientation = Orientation.Horizontal,
46 HorizontalAlignment = HorizontalAlignment.Right,
47 Spacing = 10,
48 Children = { ok, cancel }
49 }
50 }
51 };
52
53 await dialog.ShowDialog(owner);
54 return result;
55 }
56}
57
View only · write via MCP/CIDE