回答編集履歴

1

しゅうせい

2015/12/12 02:45

投稿

Tak1wa
Tak1wa

スコア4791

test CHANGED
@@ -34,37 +34,61 @@
34
34
 
35
35
  //自分より常に全面の子ウインドウを生成
36
36
 
37
- Form hoge = new Form();
37
+ var sub = new SubForm();
38
38
 
39
- hoge.Text = "SubForm";
39
+ sub.Owner = this;
40
40
 
41
- hoge.Owner = this;
41
+ sub.Show();
42
42
 
43
- var btn = new Button();
43
+ }
44
44
 
45
- btn.Text = "Dock";
46
45
 
46
+
47
- btn.Click += (s, be) =>
47
+ private class SubForm : Form
48
+
49
+ {
50
+
51
+ public SubForm()
48
52
 
49
53
  {
50
54
 
51
- //ドッキング
55
+ InitializeComponent();
52
56
 
53
- btn.Text = "Release";
57
+ }
54
58
 
55
- hoge.TopLevel = false;
56
59
 
57
- hoge.Width = 30;
58
60
 
59
- this.Controls.Add(hoge);
61
+ private void InitializeComponent()
60
62
 
61
- hoge.Dock = DockStyle.Right;
63
+ {
62
64
 
63
- };
65
+ this.Text = "SubForm";
64
66
 
65
- hoge.Controls.Add(btn);
67
+ var btn = new Button();
66
68
 
69
+ btn.Text = "Dock";
70
+
71
+ btn.Click += (s, be) =>
72
+
73
+ {
74
+
75
+ //ドッキング
76
+
77
+ btn.Text = "Release";
78
+
79
+ this.TopLevel = false;
80
+
67
- hoge.Show();
81
+ this.Width = 30;
82
+
83
+ this.Owner.Controls.Add(this);
84
+
85
+ this.Dock = DockStyle.Right;
86
+
87
+ };
88
+
89
+ this.Controls.Add(btn);
90
+
91
+ }
68
92
 
69
93
  }
70
94
 
@@ -86,13 +110,15 @@
86
110
 
87
111
 
88
112
 
89
- > 往生際が悪いですが、一つの機能はできれば1ファイルにたいなぁ
113
+ > hoge.Designer.csにあるInithializeComponents()メソッドなるものを直接書たらだめでしょうか
90
114
 
91
115
 
92
116
 
93
- これについてはフォーム間継承などを行う程度まとめることは出来ます。
117
+ 結局ろInitializeComponents行っていることはデザイナをコード反映したものです。
94
118
 
95
- それぞれフォームに特化した仕様が必要であればそれぞれのフォームの操作(機能)として実装するべき、一般的だと思います。(無理に1つにまとめる必要はない)
119
+ ですので自前でロジック実装できるのであればInitializeComponentを直接用意しても良いです。
120
+
121
+ サンプルは意図的にそうしました。
96
122
 
97
123
 
98
124