Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
エラーの対処の仕方がわかりません
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30552#CommentId84219
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
イヨ
 (社会人)
投稿日時
2020/10/5 17:24:40
いつもお世話になっております
下記コードは前回質問したときのコードです。
ちょっとアレンジや参考にして遊んでみたところそのままでは動くのですが
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=30546
★が付いているところで(自分が変えたところ)
System.OverflowException: '算術演算の結果オーバーフローが発生しました。'
と、出てきます。調べた結果型が合わないからでるらしく型を変更してみましたり、
エラー対処してみましたがいい方法が思いつかなかったです。。
ボタンをクリックした二回目以降factor変数が0のままでした。
こういう時どうすればいいでしょうか?
宜しくお願いいたしますmom
(△マークのところを素直に60や40などにしておくと出ないのですが。。。)
Private Sub PictureBox2(sender As Object, e As EventArgs) Handles PictureBox2.Click
Dim sp As System.Drawing.Point = System.Windows.Forms.Cursor.Position
Dim cp As System.Drawing.Point = Me.PointToClient(sp)
Dim x As Integer = cp.X
Dim y As Integer = cp.Y
Dim newX As Integer = RoundMultiple(x,60/100 * Form4.TrackBar2.Value)△
Dim newY As Integer = RoundMultiple(y, 40/100 * Form4.TrackBar2.Value)
省略(↑上記座標を使いGraphicsで円とか書いておえかきしています)
Exit Sub
Private Function RoundMultiple(value As Integer, factor As Integer) As Integer
Dim rate As Double = value / factor
Dim value以下で最も大きい倍数 As Integer = CInt(Math.Floor(rate) * factor)★
Dim value以上で最も小さい倍数 As Integer = CInt(Math.Ceiling(rate) * factor)
Dim 差1 As Integer = value - value以下で最も大きい倍数
Dim 差2 As Integer = value以上で最も小さい倍数 - value
If 差1 < 差2 Then
Return value以下で最も大きい倍数
Else
Return value以上で最も小さい倍数
End If