C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.31559 の関連記事表示

<< 0 >>
■31559  フォームからはみ出ないようにテキストボックスをマウスで移動
□投稿者/ キム -(2009/01/23(Fri) 17:44:44)

    分類:[VB.NET/VB2005 以降] 

    初めて投稿します。
    VB初心者です。
    WinXP、VB.NET2005という環境でやっています。
    フォーム上のテキストボックスをマウスで移動させてかつ、フォームから
    はみ出ないようにするというのを作っているのですが、右端はできているのですが上と左端のやり方が良くわかりません。
    右端のを参考に色々考えたのですが、なかなか思い通りに動きませんでした。
    下も一応は出来ているのですが、右下あたりではみ出るようになってしまいます。
    よろしくお願いします。
    見にくかったらすみません。

    ' 移動前の位置
    Dim startX As Integer
    Dim startY As Integer
    Dim FormWidth As Integer = Me.ClientSize.Width
    Dim FormHeight As Integer = Me.ClientSize.Height
    Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
    ' 左クリックの場合
    If e.Button = Windows.Forms.MouseButtons.Left Then
    '移動前の位置を記録
    startX = e.X
    startY = e.Y
    End If
    End Sub

    Private Sub TextBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseMove
    If e.Button = Windows.Forms.MouseButtons.Left Then
    ' コントロールの取得
    Dim control As Control = CType(sender, Control)

    ' コントロールの位置設定
    If control.Left + e.X - startX + TextBox1.Size.Width < FormWidth Then
    If control.Top + e.Y - startY + TextBox1.Size.Height > FormHeight Then
    control.Left = control.Left + e.X - startX - TextBox1.Size.Height
    Else
    control.Left = control.Left + e.X - startX
    control.Top = control.Top + e.Y - startY
    End If
    Else
    control.Top = control.Top + e.Y - startY
    End If
    Me.Refresh()
    End If
    End Sub
親記事 /過去ログ56より / 関連記事表示
削除チェック/

■31561  Re[1]: フォームからはみ出ないようにテキストボックスをマウスで移動
□投稿者/ .SHO -(2009/01/23(Fri) 18:15:22)
    No31559 (キム さん) に返信

    とりあえず、マウスの座標は計算に必要ないと思います。
記事No.31559 のレス /過去ログ56より / 関連記事表示
削除チェック/

■31568  Re[2]: フォームからはみ出ないようにテキストボックスをマウスで移動
□投稿者/ まどか -(2009/01/23(Fri) 22:22:12)
    よく見てませんが、MouseDownとMouseMoveでは引数の座標の座標系が違ったはず。
    #スクリーン座標とクライアント座標

    Control.PointToScreen
    Control.PointToClient
    を調べてみてください。
記事No.31559 のレス /過去ログ56より / 関連記事表示
削除チェック/

■31570  Re[3]: フォームからはみ出ないようにテキストボックスをマウスで移動
□投稿者/ キム -(2009/01/23(Fri) 23:17:21)
    No31561 (.SHO さん) に返信
    No31568 (まどか さん) に返信
    お早い返信ありがとうございます。
    このやり方は「VB.net マウスで移動 コントロール」と検索して知りました。
    それだけだとフォームからはみ出てしまうのではみ出ないようにする方法を
    色々探したり考えたりしましたが、なかなかうまくいかなかったのでここに書かせて頂きました。
記事No.31559 のレス /過去ログ56より / 関連記事表示
削除チェック/

■31576  Re[4]: フォームからはみ出ないようにテキストボックスをマウスで移動
□投稿者/ Azulean -(2009/01/24(Sat) 13:37:36)
    2009/01/24(Sat) 13:41:27 編集(投稿者)

    > このやり方は「VB.net マウスで移動 コントロール」と検索して知りました。
    > それだけだとフォームからはみ出てしまうのではみ出ないようにする方法を
    > 色々探したり考えたりしましたが、なかなかうまくいかなかったのでここに書かせて頂きました。

    「こんなことを確かめたらどうだろう?」に対して、「経緯の説明」といった内容のレスポンスが返すのはなんかずれていますよ。
    アドバイスの内容が分からないのであれば、もう少し突っ込んだ質問をしてみたらよいのでは?
    単に、説明の繰り返しをするだけだと、何を求めているのかよく分からなくなります。

    ------------
    さておき、その追及だけでは解決に進まないので、見るべきポイントを。

    まずは、If文の内容をよく読み直して下さい。
    条件の考慮漏れと、不等式の誤りがありますので、そこを見直すところから始める必要があるでしょう。

    ・右側&下側に "同時に" はみ出たときはどこを通るのか
    ・上側に はみ出したときはどこを通るのか
    ・左側に はみ出したときはどこを通るのか
    ・右側&上側、左側&上側、左側&下側に "同時に" はみ出したときはどこを通るのか

    これらが分かったら、何が足りないのかをまとめて、どういったIf文にするべきか考えてみて下さい。

    そして、補正処理(フォームの内側に留める計算)と移動処理(マウスの移動を反映する計算)を正しく入れていって下さい。
記事No.31559 のレス /過去ログ56より / 関連記事表示
削除チェック/

■31577  Re[3]: フォームからはみ出ないようにテキストボックスをマウスで移動
□投稿者/ Azulean -(2009/01/24(Sat) 13:42:15)
    No31568 (まどか さん) に返信
    > よく見てませんが、MouseDownとMouseMoveでは引数の座標の座標系が違ったはず。
    > #スクリーン座標とクライアント座標
    そんなことはありません。
    TextBoxの内のクライアント座標がどちらでも取得することを確認しました。 (C#)
記事No.31559 のレス /過去ログ56より / 関連記事表示
削除チェック/

■31595  Re[4]: フォームからはみ出ないようにテキストボックスをマウスで移動
□投稿者/ まどか -(2009/01/24(Sat) 20:15:15)
    > そんなことはありません。
    > TextBoxの内のクライアント座標がどちらでも取得することを確認しました。 (C#)

    ありゃ、そうでしたっけ。(別の話と勘違いかもです)
    失礼しました。
記事No.31559 のレス /過去ログ56より / 関連記事表示
削除チェック/

■31598  Re[5]: フォームからはみ出ないようにテキストボックスをマウスで移動
□投稿者/ まどか -(2009/01/25(Sun) 00:12:41)
    ドラッグのイベントと勘違いしてました。。。
記事No.31559 のレス /過去ログ56より / 関連記事表示
削除チェック/

■31608  Re[2]: フォームからはみ出ないようにテキストボックスをマウスで移動
□投稿者/ Jitta -(2009/01/26(Mon) 11:50:32)
>
    No31561 (.SHO さん) に返信
    > ■No31559 (キム さん) に返信
    >
    > とりあえず、マウスの座標は計算に必要ないと思います。
    >
    テキスト ボックスの、左上を持ったのか、右下を持ったのかで、移動できる範囲が異なります。

    「テキスト ボックスの左上を、必ずマウス座標にする」のであれば、計算に必要はありません。しかしそうすると、マウス ボタンを押し込んだ瞬間にコントロールが動いてしまいます。
記事No.31559 のレス /過去ログ56より / 関連記事表示
削除チェック/

■31609  Re[3]: フォームからはみ出ないようにテキストボックスをマウスで移動
□投稿者/ みきぬ -(2009/01/26(Mon) 12:15:41)
    とりあえず縦方向の処理のことは忘れて、横方向の移動だけ完璧になるよう作ってみてはどうでしょ?
    縦方向の処理は、横方向の処理ができればそれを真似っこするだけでできちゃうだろうし。
記事No.31559 のレス /過去ログ56より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -