VB.NET質問スレ (Part24)
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/12/13(木) 10:03:48VB.NET質問スレ
http://pc11.2ch.net/test/read.cgi/tech/1189038267/
(Partがありませんが、23です。)
テンプレは2〜5くらいまでの間にある予定
0412407
2008/01/09(水) 23:48:12そして、また位置から画像表示みたいな風にしようかなって思ってます。
0413デフォルトの名無しさん
2008/01/09(水) 23:56:37ImageオブジェクトのDispose()ちゃんとやってる?
0414デフォルトの名無しさん
2008/01/10(木) 00:01:52なんかトンチンカンな回答が多いが、問題の本質は画像を配列に格納していること。
冷静に考えてみ?
そんな無駄なことをする必要がどこにある。
0415407
2008/01/10(木) 00:18:26>>413
ためしにやってみたのですが、やはりうまくいきませんでした。
私の認識がおかしかったのかもしれませんが・・・
>>414
確かにわざわざ入れる必要がないことに気がつきました。
もう一度、考え直してプログラムを作ってみようと思います
0416デフォルトの名無しさん
2008/01/10(木) 08:47:02サーセンwww
友達からもらいましたwww
0417デフォルトの名無しさん
2008/01/10(木) 09:09:13まず先輩・友達をあたってからここへ来いw
0418デフォルトの名無しさん
2008/01/10(木) 10:47:470419デフォルトの名無しさん
2008/01/10(木) 19:59:53〜
Catch ex As Exception
End Try
0420デフォルトの名無しさん
2008/01/10(木) 20:04:26Try
〜
Catch ex As Exception
〜
End Try
これで出た例外 ex をもっと細かく分離して受け取る場合は
Try
〜
Catch ex As Exception
〜
Catch ex As HogeException
〜
Catch ex As HogeHogeException
〜
End Try
などとするということで良いでしょうか?このCatchの順番を間違えると
受けたい例外の種類として確実に受けられないということはあるでしょうか?
(たとえば上の順番だと、全部最初のExceptionで受けてしまうことになるの
でしょうか?
0421デフォルトの名無しさん
2008/01/10(木) 20:13:24つーかthrowしてみりゃいいだけの話
0422デフォルトの名無しさん
2008/01/10(木) 20:26:290423デフォルトの名無しさん
2008/01/10(木) 20:38:55わかりました。
When ステートメントとかもあったのですね、勉強になりました。
0424デフォルトの名無しさん
2008/01/11(金) 00:19:04DataGridViewでセル番地を指定して処理したいのですが
(x,y)のように指定するのはどのメソッドを使えばいいのでしょうか?
0425デフォルトの名無しさん
2008/01/11(金) 09:35:59DataGridView(columnIndex,rowIndex)
とか
DataGridView(columnName,rowIndex)
columnIndexはイマイチ怪しいときがあるので、後者のカラム名指定の方が確実かなぁ
0426デフォルトの名無しさん
2008/01/11(金) 12:10:420427デフォルトの名無しさん
2008/01/11(金) 13:16:090428424
2008/01/11(金) 23:04:42ありがとうございました。
0429デフォルトの名無しさん
2008/01/12(土) 01:51:260430デフォルトの名無しさん
2008/01/12(土) 02:03:190431デフォルトの名無しさん
2008/01/12(土) 02:08:19Handles Me.KeyDown
Dim ctrl As Control = Me.SplitContainer3.ActiveControl
If Not TypeOf ctrl Is TextBox Then Exit Sub
If e.Control Then
Select Case e.KeyCode
Case Keys.A
DirectCast(ctrl, TextBox).SelectAll()
Case Keys.C
DirectCast(ctrl, TextBox).Copy()
Case Keys.X
DirectCast(ctrl, TextBox).Cut()
Case Keys.V
DirectCast(ctrl, TextBox).Paste()
Case Keys.Z
DirectCast(ctrl, TextBox).Undo()
End Select
End If
End Sub
↑を実行するとCtrl+A以外の条件ではKeyDownイベントが発生しないのですが
どんな原因が考えられるでしょうか?
0432デフォルトの名無しさん
2008/01/12(土) 06:00:150433デフォルトの名無しさん
2008/01/12(土) 10:37:430434デフォルトの名無しさん
2008/01/12(土) 12:18:18選択した文字列をコンテキストメニューから削除する方法で手間取っています
txtCommand.Text.Replace(txtCommand.Text, String.Empty)
としてますが、Undoしても効かない状態です。
Undoできるようにする方法はありますでしょうか。
0435デフォルトの名無しさん
2008/01/12(土) 12:33:500436デフォルトの名無しさん
2008/01/12(土) 12:45:44TextBoxです
0437デフォルトの名無しさん
2008/01/12(土) 13:25:46SelectedText=""
0438デフォルトの名無しさん
2008/01/12(土) 13:31:21txtCommand.Text.Replace(txtCommand.SelectedText, String.Empty) でした
0439デフォルトの名無しさん
2008/01/12(土) 14:20:09そのコードは何もしないと思うけど。戻り値を使ってないから。
で、>>437
0440デフォルトの名無しさん
2008/01/12(土) 14:34:45普通にCtrl+A以外も拾えたよ?
FormのKeyPreviewがTrueになってたら、イベント自体は絶対発生してると思うけど。
0441デフォルトの名無しさん
2008/01/12(土) 19:29:57アイコンがちっちゃいサイズで表示されるとき
絵がちゃんと表示されないんですがなぜですか?
0442デフォルトの名無しさん
2008/01/12(土) 20:07:54TextBoxの幅を十分に取ることができません。
それで、複数行に表示させたいと思います。
しかし、文字列に改行を含ませるわけにはいきません。
それでtextBox.Multiline=true、textBox.AcceptsReturns=false
と設定してみたのですが、
入力してみると改行を受け付けてしまいます。
なぜ????
何か思いっきり勘違いしてる?
他のプロパティはデフォルトのままです。
0443デフォルトの名無しさん
2008/01/12(土) 20:20:010444デフォルトの名無しさん
2008/01/12(土) 20:39:48AcceptsReturnsでは望みの動作は得られないってことね
じゃ、上記の動作をさせるにはどうしたらいいんでしょう?
0445デフォルトの名無しさん
2008/01/12(土) 20:50:13KeyDownとKeyPressの組み合わせできました
0446431
2008/01/12(土) 22:35:07ありがとうございます。
自分もさっきフォームにテキストボックス1つのシンプルな配置でやってみましたが
ちゃんと拾いますね・・・
でももともとのフォームで実行するとCtrl+A以外ではイベントが発生しないんです・・・
ちなみにそのフォームというのは
下 Form - SplitContiner - TabControl - Panel - TextBox 上
の順番で重なってますが全く原因がわかりません・・・
0447431
2008/01/12(土) 22:39:00イベントが発生するのですが、KeyDownだけ発生しない原因てなんでしょうかねぇ・・・
0448デフォルトの名無しさん
2008/01/13(日) 00:10:35>下 Form - SplitContiner - TabControl - Panel - TextBox 上
なら
If Not TypeOf ctrl Is TextBox Then Exit Sub
↑ここで抜けてる気がするなぁ。
Ctrlの定義を
Dim ctrl As Control = Me.SplitContainer3.TabControl.Panel.ActiveControl
にしなきゃダメな悪寒
イベントが発生しないと書いているが、イベント事態は発生してるんじゃない?
イベントハンドラの一番上にmessageboxなりConsole.writeなり書いてイベント事態が起きてるかどうか確認してみた?
0449431
2008/01/13(日) 02:00:27MessageBoxで確認しているので間違いなくCtrl+A以外ではイベントが発生していません
Controlキー単独だとKeyDownイベントが発生しますが、Ctrl+A以外のキーだと駄目です
マジで心当たりのある方、お願いいたします・・・
0450デフォルトの名無しさん
2008/01/13(日) 02:10:22Spy+使ってどのハンドルにメッセージが来てるか見るとか。
0451デフォルトの名無しさん
2008/01/13(日) 02:55:05>ちゃんと拾いますね・・・
解決糸口はここだよなぁ。上記の通りであれば、環境的な問題ではなく、何かのコントロールがジャマしてるんだろうか。
SplitContiner - TabControl - Panel - TextBox
となっているみたいだけど、
SplitContiner - TextBox
TabControl - TextBox
Panel - TextBox
みたいな感じで地道に試してみるしかないのかな?
0452デフォルトの名無しさん
2008/01/13(日) 03:05:30>>446の
下 Form - SplitContiner - TabControl - Panel - TextBox 上
の順にコントロール置いて試してみたが普通に全部拾えた。
FormのKeyDownが拾えなくなるってことは、どこかでFormのKeyPreviewをFalseにするようなコードが書かれてるのか?
TextBox自体のKeyDownはちゃんと発生しているのかな?
0453デフォルトの名無しさん
2008/01/13(日) 04:35:40VB.NETでDataTableオブジェクトとかが使用しているメモリ量を見たいんですが
タスクマネージャでは今一歩正確性に欠けるので(できれば)フレームワークなどの機能で計測できないでしょうか?
0454デフォルトの名無しさん
2008/01/13(日) 04:44:570455デフォルトの名無しさん
2008/01/13(日) 04:50:17早速のレスサンクスです!!!
ググってサイトみてみました
おそらくヒープメモリの割り当てサイズが知りたいのでまさにこれではないかと!!!!
ちょっと明日にでも使ってみます!!
助かりました ありがとうございました。
0456デフォルトの名無しさん
2008/01/13(日) 05:06:02俺もそうなった時があった。
MDIフォームの子フォームとして使ってたため
イベントがメニューのショートカットに持っていかれてた。
0457デフォルトの名無しさん
2008/01/13(日) 19:46:44tabコントロールで特定ページに入ったとき、
既に生成されてるDataTableを元グラフを描画しようとしています。
そもそも、VBの挙動の根幹部分から分かっていないのですが、
特定タブに入った後に、ボタン等のイベントを拾って描画はできるのですが、
これだと、別のタブに移動した後に、再びこのページに戻ってくると、
再度ボタンを押して描画させなければなりません。
それだと面倒なので、特定ページに入ったときに描画させるようにしたいのですが、
Handles TabPages1.Click
だと早すぎるのか?描画がされて消えてしまうような感じですし、
どのイベントを拾えばいいのかが分かりません。
どなたかこの辺を勉強しろでも構いませんので、教えてください。
よろしくお願いします。
0458デフォルトの名無しさん
2008/01/13(日) 19:50:07つまりその基本どおりにやるだけじゃないの?
0459457
2008/01/13(日) 20:11:46やっぱAPIを知らなきゃ話にならないですよね・・・
もう一つだけ、たぶんこれも勉強しろって事なんでしょうけど
教えていただきたいのですが、
Private Sub TabControl1_SelectedIndexChanged( _
ByVal sender As Object, ByVal e As System.EventArgs) _
Handles TabControl1.SelectedIndexChanged
MsgBox("test")
graph = New Graph(GraphArea, 100, 90)
End Sub
Graphクラスの初期化時に、グラフの背景を描画させているのですが、
TabControl1の選択時に、
MsgBox("test")と、ワンクッションおくと、きちんとグラフが描画されるのに、
これが無いと描画されないというのは、どういう原理なんですかね・・・?
もしよろしければ教えてください。お願いします。
0460デフォルトの名無しさん
2008/01/13(日) 20:28:43何もないと
グラフ描画したあとペイントイベントで上描き(→描画されていないように見える)
メッセージボックスを表示すると、そこで処理がとまるからペイントイベント先行、その後グラフ描画
となるからグラフが表示される。
>>458の言うとおり、Paintのイベントハンドラ内でグラフ描画処理すべし
0462デフォルトの名無しさん
2008/01/13(日) 20:44:24まぁがんがれ(`・ω・´)!
0463デフォルトの名無しさん
2008/01/14(月) 12:06:10いいですか?このまえWM_NC**を使うということを聞いたのですが、マウスダウンのイベントが発生しないので困ってます
どなたか教えてください
0464デフォルトの名無しさん
2008/01/14(月) 12:14:140465431
2008/01/14(月) 14:49:18まさにそのとおりでした。ありがとうございます。
MDI子フォームでいつの間にか標準のメニューが挿入されていて
Ctrl+A以外がバッチリ割り当てられていたのですが
MenuStripのVisibleをFalseにしてあるので全く気づきませんでした。
IDEのほうでショートカット割り当てられると割り当てたキーでは
同じキーイベントは拾えなくなるんですね。
レスいただいたみなさん、ありがとうございました。
0466デフォルトの名無しさん
2008/01/14(月) 22:16:53ttp://www.ideaxidea.com/archives/2007/10/windows_pc.html
こちらの記事の2番目のフォームのようなコントロールボックスを作成したいのですが、どういった方法があるでしょうか。
0467デフォルトの名無しさん
2008/01/15(火) 00:55:29MDI子フォームと書かずに解答を出せとは難問だったな。
原因と思しき場所を絞って質問するのもいいが、全体を教えてくれなきゃ想像付かん場合もある。
何であれ、解決してよかったが…。
0468デフォルトの名無しさん
2008/01/15(火) 01:00:05コントロールボックスってなんぞ?
2番目って
ttp://www.ideaxidea.com/archives/2007/10/14/mainte_2.gif
これかな?
これのどの部分を作りたいの?
0469デフォルトの名無しさん
2008/01/15(火) 03:14:12'.gif\P2P
r
0470デフォルトの名無しさん
2008/01/15(火) 08:06:44最小化、最大化、閉じるボタンの部分です
.NETのプロパティがControlBoxなのでそういう名称だと思っていましたが…
画像のようにデザインを変更したいのです
0471468
2008/01/15(火) 10:27:18なんか脳が溶けてました
これってVistaのUIで、別に自前でつくっているわけじゃないと思う。
別OSでそっくりにつくるなら、タイトルバー消して、ボタン配置して、画像用意するかVisualStyleRendererでボタンの外装作り変えて…って感じになるのかな。
0472デフォルトの名無しさん
2008/01/15(火) 12:44:42タイトルバーを消してやってみます
ご教授ありがとうございました
0473デフォルトの名無しさん
2008/01/15(火) 14:47:28そのスピードをMarqueeAnimationSpeedでセットすると、OSはXpですが
Valueを操作しなくても自動的に動いてくれるようになるでしょうか。
ためしにそれだけやったところでは動き出すようにはなりませんでしたが、
メソッドを何か叩くことでスタートするのでしょうか。何卒よろしくお願いします。
0474デフォルトの名無しさん
2008/01/15(火) 14:55:400475デフォルトの名無しさん
2008/01/15(火) 15:15:29さっそくどうもです。MarqueeAnimationSpeed は何がどこまで動く
速度になるかがわかりませんでした。Valueを入れて動かすとします
とスピードの効果が出てくるのでしょうか。そこがわかりません。
0476デフォルトの名無しさん
2008/01/15(火) 15:57:230477デフォルトの名無しさん
2008/01/15(火) 15:59:370478デフォルトの名無しさん
2008/01/15(火) 16:22:210479デフォルトの名無しさん
2008/01/15(火) 18:15:47クラシック・スタイルではVisualStyleを使っていないので自動的には動かず
XpスタイルにすればVisualStyleを使っているので自動的に動くのでしょうか・・・。
どちらでも同じようにValueを与えないと動かないような・・・、それではもう一度
確認してみますです。
0480473
2008/01/15(火) 18:48:51試してみましたら、きちんと動作していました。認識が違っていました。
バックグラウンドワーカーと併用したときに何か別の原因で動かなかった
のを間違って記憶していました、すみません・・・。
ただやってみますとやはりシングルスレッドで動かすと動きが早くなったり
遅くなったりして等速では動かないですね・・・、これはタイマーでValueを
操作しても同じでした。等速で動かすには別スレッドでコントロールを直接Value
を与えることができないと無理そうな感じでした、といってもそういうオブジェクト
をいじるとNGなのですよね??
0481デフォルトの名無しさん
2008/01/15(火) 18:54:05描画は多分優勢度低いから無理がある可能性が高い気がするよ。
0482デフォルトの名無しさん
2008/01/15(火) 22:56:52どうしても気になるならフリースレッドの処理に時々Thread.Sleep()入れてやれば
改善するんじゃない?
でもそんなことにこだわる意味があるのかな?
プログレスバーの意義はユーザーに処理がフリーズしてない安心感を与えることだろうから、
それさえできれば必要十分な気がするけど。
0483デフォルトの名無しさん
2008/01/15(火) 23:12:39>プログレスバーの意義はユーザーに処理がフリーズしてない安心感を与えること
わかりました。つっかえつっかえ動くような感じなのですが、それがプログラムの
作業によるのだということでこれでよしと考えました。ありがとうございました!
0484デフォルトの名無しさん
2008/01/16(水) 02:33:54裏で動いてる処理を何一つとして理解してないだろおまえ……
0485デフォルトの名無しさん
2008/01/16(水) 09:58:17ネットワークドライブ、などの媒体をそれぞれ見分けてそのアイコンが表示されて
いました。
これというのはそれを示す何かのパラメータを見て行っているのだと思いますが、
このパラメータを取り込むためのクラスがありましたら教えてください。
0486デフォルトの名無しさん
2008/01/16(水) 10:09:150487デフォルトの名無しさん
2008/01/16(水) 10:13:54おお、あるのですね!ありがとうございました!!調べてみます!!
0488デフォルトの名無しさん
2008/01/16(水) 10:26:23コンテナコントロールを派生させ子コントロールが置けるクライアント領域の範囲
を変更したいのですが、どのメソッドをオーバーライドすればいいのでしょうか?
例えば、コンテナコントロールの Width が 100 で Height が 200 ですと、
内部に子コントロールを配置してその Dock を Fill にすると、そのコントロールは
Width 100 Heidht 200 になりコンテナコントロール全体に広がりますが、
このコンテナコントロールのクライアント領域を変更し、若干余白を持たせるため
に既定で、上、下、左、右から 10 ピクセル程狭めたオリジナルのコントロールを
作成したいのです。
0489デフォルトの名無しさん
2008/01/16(水) 10:32:170490デフォルトの名無しさん
2008/01/16(水) 11:08:430491デフォルトの名無しさん
2008/01/16(水) 11:11:280492488
2008/01/16(水) 11:30:47横 0 〜 Width
縦 0 〜 Height
ですよね。
これを変更して周りに 10 ピクセル程クライアント領域として認めない領域を作った場合、
横 10 〜 Width - 10
縦 10 〜 Height - 10
になりますが、この場合 Padding の Left や Top が 0 の場合は、
クライアント領域の一番左上(10、10)になるようにしたいのです。
恐らく Control クラス辺りをメソッドなどをオーバーライドすれば
出来そうな予感がするのですが、わからないのです。
0493デフォルトの名無しさん
2008/01/16(水) 11:44:38www.sfpac.com/
0494デフォルトの名無しさん
2008/01/16(水) 12:01:250495デフォルトの名無しさん
2008/01/16(水) 12:06:18学生 「はい。ブラックジャックです。」
面接官「ブラックジャックとは何のことですか?」
学生 「手術です。」
面接官「え、手術?」
学生 「はい。手術です。患者全員の足元を見て手術料をふんだくります。」
面接官「・・・で、そのブラックジャックは当社において働くうえで何のメリットがあるとお考えですか?」
学生 「はい。社員がケガしてもお金払えば治せます。」
面接官「いや、当社にはケガをするヤワな輩はいません。それに人のお金をふんだくるのは犯罪ですよね。」
学生 「でも、重症の足でも切断せずに治せますよ。」
面接官「いや、切断とかそういう問題じゃなくてですね・・・」
学生 「モグリなんですよ。」
面接官「ふざけないでください。それにモグリって何ですか。だいたい・・・」
学生 「医師免許を持っていな医師です。闇医者とも書きます。バレないコツは・・・」
面接官「聞いてません。帰って下さい。」
学生 「あれあれ?怒らせていいんですか?ふんだくりますよ。3000万円。」
面接官「いいですよ。ふんだくって下さい。おふくろの命が助かるなら3000万円くらい一生かかっても払います。」
学生 「その言葉が聞きたかった。」
面接官「先生・・・」
0496デフォルトの名無しさん
2008/01/16(水) 12:21:090497デフォルトの名無しさん
2008/01/16(水) 13:55:22UserControlの指定した位置((10,10)とか)にPanelを配置したコントロールをつくればいいんじゃない。
0498デフォルトの名無しさん
2008/01/16(水) 14:51:372008で作ったソフトははVISTAで何も追加しなくとも
うごくのでしょうか?
NET3.5っていうことはNET3.0が入っているVISTA
ではダメということ?
これではいつになってもVB最新版で作ったソフトは
最新OSでは満足に動かないってことになるのでは?
だれかご存知の方いらっしゃいませんか
0499デフォルトの名無しさん
2008/01/16(水) 14:54:350500デフォルトの名無しさん
2008/01/16(水) 16:03:25どうせ中身2.0なんだし。
0501デフォルトの名無しさん
2008/01/16(水) 16:30:54どこかにあるでしょうか?
0502デフォルトの名無しさん
2008/01/16(水) 16:52:240503デフォルトの名無しさん
2008/01/16(水) 16:55:10http://www.google.com/search?num=50&hl=ja&safe=off&as_qdr=all&q=image+save+%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88+-1%E5%9B%9E%E3%81%8F%E3%82%89%E3%81%84%E3%82%B0%E3%82%B0%E3%82%8C%E9%A6%AC%E9%B9%BF%EF%BC%81&lr=lang_ja
0504デフォルトの名無しさん
2008/01/16(水) 17:53:02激しくワラタw
しかし、>>503もツンデレだなw
0505デフォルトの名無しさん
2008/01/16(水) 20:13:24何故4方にアンカー打てばいいだけの話を面倒にしようとしているのかね?
0506485
2008/01/17(木) 00:21:22CD-R をフロッピーと同じように読み書きできる B's Clip というソフト
を導入していました。このときに Explorer では、コンテキストメニューや
D&DなどによるCD-Rの読み書き、およびフォルダのリネームなどができました。
それで、Win32APIの SHFileOperation()でのコピーなどはできたのですが、
Explorerではできたフォルダのリネームを My.Computer.FileSystem.RenameDirectory()
でやってみたところ、これは書き込みができない旨のメッセージが出てきて
失敗していました。
また、Explorerでは「取り出し」というメニューがあってCD-Rを取り出しできました。
こうした特定のファイルやデバイスの操作をExplorerではできる場合、それを
なんらかの形でプログラムからもCD-Rドライブなどへの操作を可能にする
ためにはどんな方法をとるべきでしょう?どこかにそれ用のAPIなどがわかる
ようになるでしょうか?
0507デフォルトの名無しさん
2008/01/17(木) 00:58:58ttp://support.microsoft.com/kb/165721/ja
別にこれじゃなくてもいろいろ出来ると思うけど
0508デフォルトの名無しさん
2008/01/17(木) 01:03:27COM経由でいけると思う
IShellFolder::SetNameOf とか IContextMenu.InvokeCommandとか。
知らんけど。
CDの取り出し自体はDeviceIoControlでできる
0509デフォルトの名無しさん
2008/01/17(木) 01:04:13そのCDドライブ上のファイル操作はB'sが
シェル拡張を仕掛けているからできるようになっている。
だから、SHFileOperationのようなシェルに対する操作はできるが、
My.Computer.FileSystemはシェルより下層の操作となるため、そのように失敗する。
ファイル操作に関してはSHFileOperationに限らずシェルの機能を使えばいけるはず。
0510485
2008/01/17(木) 07:30:59ああ、こんなに早く多くの明解なご指導、感謝に堪えません。
Shell、IShellFolder、DeviceIoControl これらにトライしてみます!
ありがとうございました!
0511デフォルトの名無しさん
2008/01/17(木) 17:32:29SqlDataReaderからデータを取得するとき、途中で安全に中断するにはどういうやり方が好ましいでしょうか?
■ このスレッドは過去ログ倉庫に格納されています