質問編集履歴

3

私が実装を考えていたコードをかきます

2021/04/24 07:14

投稿

hanbee.com
hanbee.com

スコア52

test CHANGED
File without changes
test CHANGED
@@ -187,3 +187,113 @@
187
187
  やはり、上記のコードを使ったほうが、動作としては良かったです。
188
188
 
189
189
  これをプロパティにするには、、どのような工夫が必要になるのでしょうか。
190
+
191
+
192
+
193
+ 追記2
194
+
195
+ 私がしていたコードを書きます
196
+
197
+ ```ここに言語を入力
198
+
199
+ ' --- 変数宣言
200
+
201
+ Private originalSize As Size ' -- コントロール・スケーリング用オリジナルサイズ
202
+
203
+ Private Sub Form1_SizeChanged(sender As Object, e As EventArgs) _
204
+
205
+ Handles MyBase.SizeChanged
206
+
207
+ Me.SuspendLayout()
208
+
209
+ ' --- フォーム上のコントロールのサイズと位置を調整
210
+
211
+ If Not (Me.WindowState = FormWindowState.Minimized) Then
212
+
213
+ ' --- サイズファクターの決定
214
+
215
+ Dim sfWidth As Single = (Me.ClientSize.Width / Me.originalSize.Width)
216
+
217
+ Dim sfHeight As Single = (Me.ClientSize.Height / Me.originalSize.Height)
218
+
219
+ Dim sizeFactor As New SizeF(sfWidth, sfHeight)
220
+
221
+ ' --- 各コントロールのスケーリング
222
+
223
+ For Each ctrl As Control In Me.Controls
224
+
225
+ If (TypeOf ctrl Is ListBox) Then
226
+
227
+ DirectCast(ctrl, ListBox).IntegralHeight = False
228
+
229
+ End If
230
+
231
+ If (TypeOf ctrl Is ComboBox) Then
232
+
233
+ DirectCast(ctrl, ComboBox).IntegralHeight = False
234
+
235
+ End If
236
+
237
+ ' --- フォントのスケーリング
238
+
239
+ Dim fntScale As Single = (ctrl.Font.Size * sizeFactor.Height)
240
+
241
+ ctrl.Font _
242
+
243
+ = New Font(ctrl.Font.FontFamily, fntScale, ctrl.Font.Style, ctrl.Font.Unit)
244
+
245
+ ' --- コントロールのスケーリング
246
+
247
+ ctrl.Scale(sizeFactor)
248
+
249
+ Next
250
+
251
+ ' --- オリジナルサイズに保存
252
+
253
+ Me.originalSize = Me.ClientSize
254
+
255
+ End If
256
+
257
+ End Sub
258
+
259
+   Public moni_height As Integer
260
+
261
+ Public moni_width As Integer
262
+
263
+
264
+
265
+ Public Sub New()
266
+
267
+ 'ディスプレイの高さ
268
+
269
+ Dim h As Integer = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
270
+
271
+ moni_height = h
272
+
273
+ 'ディスプレイの幅
274
+
275
+ Dim w As Integer = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
276
+
277
+ moni_width = w
278
+
279
+ End Sub
280
+
281
+
282
+
283
+ Private Sub form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
284
+
285
+ '大きさを画面の大きさに指定すると、サイズチェンジイベントがあるので、コントロールも同じ割合で大きくなってくれる。
286
+
287
+ Me.Top = 1
288
+
289
+ Me.Left = 1
290
+
291
+ Me.Height = moni_height
292
+
293
+ Me.Width = moni_width
294
+
295
+ End sub
296
+
297
+
298
+
299
+ ```

2

追記

2021/04/24 07:14

投稿

hanbee.com
hanbee.com

スコア52

test CHANGED
File without changes
test CHANGED
@@ -175,3 +175,15 @@
175
175
 
176
176
 
177
177
  以上、長文失礼しました。宜しくお願いします。
178
+
179
+
180
+
181
+
182
+
183
+ 追記
184
+
185
+ Dock,Anchorを試してみましたが、どうやらコントロールを列挙して都合のいいように動作してくれません。
186
+
187
+ やはり、上記のコードを使ったほうが、動作としては良かったです。
188
+
189
+ これをプロパティにするには、、どのような工夫が必要になるのでしょうか。

1

誤字訂正

2021/04/22 22:28

投稿

hanbee.com
hanbee.com

スコア52

test CHANGED
@@ -1 +1 @@
1
- フォームを引数としたプロパティを作りたい
1
+ フォームを引数としたメソッドを作りたい
test CHANGED
File without changes