VB.NET質問スレ (Part8) ..
970:デフォルトの名無しさん
05/01/24 12:09:50
>>967
Form1内に書くなら
>Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
ではなく
Private Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Declareは基本的にモジュール記述時にグローバルな参照として使用するときに記述する宣言。
その辺を考慮すればできると思う。
971:デフォルトの名無しさん
05/01/24 13:09:56
>>966
ありがとうございます。
CurrencyManagerの使い方を学ぼうと思ってぐぐってたら、別の
方法も見つかったので、こちらを試したところうまくいきました。
URLリンク(www.atmarkit.co.jp)
C# to VB.NET Translatorにかけたらこんな感じになったので、こ
のRowに対してDeleteを実行したところ、整合性を保ったまま継続
削除できました。
Dim row As DataRow = CType(dgSample.BindingContext(dgSample.DataSource, dgSample.DataMember).Current, DataRowView).Row
VB6.0のADOから移行するため勉強中ですが、カレント行の扱い
が変わってて四苦八苦してたところでした。ほんと助かりました。
972:デフォルトの名無しさん
05/01/24 13:51:32
>>968-970
皆さん、どうもありがとうございました。どうにか解決しました。
結局、自分の採った方法は>>969さんのものでした。
1) ソリューションエクスプローラ上で [追加(D)] - [モジュールの追加(M)]の
操作でModule1.vbを追加。
2) Module Module1 〜 End Module間に
Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Public Const EWX_LOGOFF = 0
を追加
でBuildしたらエラーが出ませんでした。動作内容もほぼ期待どおりでした
(なんか処理が遅いようだけど、それは質問の主旨とは無関係なので略)。
このExitWindowsExを使うのは8年近く前の雑誌の記事を参考にしたため
このような記述になっていますが、>>969さんのおっしゃるようにVB.NETでは
LongでなくIntegerを使うべきだったように思います。
そもそもの狙いはVCで作ったプログラムがあり、それを
GUIはVB、内部処理はVCでDLLにしたものを呼び出す
という形にするということで、その前段階で引っかかっていたのでした。
どうもありがとうございました。
973:デフォルトの名無しさん
05/01/24 14:13:15
すみません、1年目の初心者です
Image型変数に格納されている画像の左側30ピクセル分を廃棄して
元のImage型変数に格納し戻すにはどのようにすれば良いのでしょうか
974:デフォルトの名無しさん
05/01/24 14:31:27
廃棄した部分はどうなるの?
イメージの幅が狭くなる? 黒で塗りつぶす?
975:デフォルトの名無しさん
05/01/24 14:41:18
ファイル名がtest1.txt、test2.txt,test3.txt・・・・・・test50.txt
の50個のテキストファイルを、消去するにはどうすれば?
ファイル名の1,2,3などの整数部分を、変数にし、ループさせて
消すにはどうしたらよいですか?
976:デフォルトの名無しさん
05/01/24 14:43:08
ループカウンタがiとして、
"test" & i,ToString() & ".txt"
でいいんじゃないかね。
977:973
05/01/24 14:49:23
>>974
イメージの幅を狭くしたいです。
978:デフォルトの名無しさん
05/01/24 14:54:56
なら、
1)元の画像より幅が30ピクセル小さいBitmapオブジェクトをNewする
2)Graphics.FromImageメソッドで作ったBitmapオブジェクトからGraphicsオブジェクトを取得する
3)GraphicsのDrawImageメソッドを適切な引数で実行し、元画像を描画する
4)GraphicsのDisposeメソッドを実行する
5)Image型変数Image2を宣言し、元のImageを代入する
6)元のImageに (2)で作成したBitmapを代入する
7)Image2のDisposeメソッドを実行する
5・7は必須ではないがモアベターな手法として。
3は色々試して。
979:琴音
05/01/24 15:23:32
プログラミング初心者です。いまVB.NETで以下のようなフォームを作成してます。
<FORM1>
テキストボックスと更新ボタン
<CLASS1>
更新ボタンを押したときの処理
=====================
Public Class Form1
Inherits System.Windows.Forms.Form
//" Windows フォーム デザイナで生成されたコード "
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim TestClass As New Class1
TestClass.Main1()
End Sub
End Class
=====================
Public Class Class1
Dim i As Integer
Public Sub Main1()
Dim TestForm As New Form1
TestForm.TextBox1.Text = "あいうえお"
TestForm.Refresh()
End Sub
End Class
=====================
更新ボタンを押したときフォームがうまく再表示されません。やり方が間違ってるのだと思いますがご存知でしたら教えてください。
980:973
05/01/24 16:02:43
>>974
>>978
ありがとうございます
リーダーの簡易レビューでもその手順でOK通れました
981:デフォルトの名無しさん
05/01/24 16:58:42
ある指定したディレクトリに、テキストファイルが作成されたら
イベント発生させたいです。ファイルは5つほど、時間を置いて作成されて
ファイル名は指定せず、単にtxtファイルが作成されたら、その度に
イベント発生という形にしたいですが
ある指定したディレクトリにtxtファイル(ファイル名指定なし)
が作成されたらという条件が書けません、どうすればよいでしょうか?
982:デフォルトの名無しさん
05/01/24 18:23:14
>>981
FileSystemWatcher
983:デフォルトの名無しさん
05/01/24 18:59:42
labelの表示に、一定時間後に表示を変えるにはどうすればいいんですか?
たとえば、「あいうえお」を一文字ずつ一秒間だけ表示するとか。
984:デフォルトの名無しさん
05/01/24 19:05:52
System.Windows.Forms.Timer
985:デフォルトの名無しさん
05/01/24 19:19:08
>>979
だから何度でも言うが、まず問題が人に正確に伝わらない限り
答えは永遠に得られないよ。どんな親切な人がいようとね。
ハッキリ言うとそのコードと文章では、結局何がしたいのかいまいちよく分らない。
新しく作ったフォームを操作しているのに再表示?っていうか再表示って何?
というか、君そもそも何の学習もせずに質問してないか?
人とコミュニケーションする以上、
質問するのにも最低限の知識は押さえてないと始まらないでしょ。
>>983
そんなことを人に尋ねるおたんちんにプログラミングは無理。
986:デフォルトの名無しさん
05/01/24 19:25:09
質問する人にあれこれいうつもりは全くないんだけど、
C#スレとVBスレで質問のレベルが全然違うのはどうしてだ。
同じ.NETなのに。そもそもどちらで聞いてもいいような質問がほとんどだから
スレが分かれている必要性も疑問だが。
987:デフォルトの名無しさん
05/01/24 19:36:33
>>979
TestForm.Show
でもダメか?
988:デフォルトの名無しさん
05/01/24 19:41:46
>>987
TestForm変数はMain1()の中だけのローカル変数なので、
Show()してMain1()を抜けた瞬間ダングリングポインタになる。
どっかにスコープの確保した変数でおかないと。
そもそも何やりたいのかサッパリ分からんしね。
989:デフォルトの名無しさん
05/01/24 20:04:58
ごつい参考書のClass解説を斜め読みして、とりあえず作ってみました
感が満ちあふれてるような。もっと初心者向けの解説書から始めたほ
うがいいんでないかと。
990:デフォルトの名無しさん
05/01/24 21:27:11
MSCommを使ってRS-232Cケーブルでシリアル接続してデータ
のやりとりを行うプログラムを作成中なんですが
COMポートの変更をVBのプログラム上から行いたいのです。
デフォルトではCOM1なのですが、例えばプログラム上で
コンボボックスを利用し
MSComm1.ComPort = comport.selectedIndex + 1
というようなことをやりその後ComOpenを真にしても
使われているポートでもないっぽいのにエラーが起きてしまいます。
マイコンピュータのデバイスマネージャーから手動でCOMを変えてやると
うまくいきます。
これを何とかプログラム上から操作したいですが、どうすればよろしいんでしょうか?
ご存知の方、ご教授ください。宜しくお願いします。
991:デフォルトの名無しさん
05/01/24 21:35:13
>>990
エラー内容を一言一句書いてくれ。
話はそれからだ。
992:デフォルトの名無しさん
05/01/24 21:39:39
>>990
質問する前にヘルプぐらい読んだらどうよ?
MSComm使うってことは旧VBの正規版Pro以上の持ってるんでしょ?
だったらMSDN読めるはずじゃん。
持ってないならライセンス違反だよ。
おまけに質問の文章もいまいちわかり難い。つかみどころがない。
>使われているポートでもないっぽいのに
想像だが、「使えない」ポート指定してるからじゃないの?
993:デフォルトの名無しさん
05/01/24 21:50:18
>>990
次スレよろ
それと不十分な質問分への返り討ちテンプレ案
「もうちょっと詳しく丁寧に」
994:デフォルトの名無しさん
05/01/24 21:50:29
ここは、.NETスレだよな?VB6スレじゃないよな?
995:デフォルトの名無しさん
05/01/24 21:55:40
>>991
学校のPCで作業していて、自宅のPCには.net環境がないのでエラー内容が
分からないんです。申し訳ありません。
>>992
On Error Resume
For i=0 To 16
MSComm1.CommPort = i
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
comport.Items.Add("COM" & i & "OK")
Else
comport.Items.Add("COM" & i & "NG")
End If
MSComm1.PortOpen = False
For Next
みたいなカンジでとりあえずポート1から16までをオープンしてみては
使えるかどうかをif文で分けて、コンボボックスのリストに追加して
いってるんですが、デフォルトの1と3しかOKにならないのです。
これはそれ以外は使えないという事なんでしょうか?
なんかまた良く分からない文章になってすいません。これ以上自分でも
詳しく書けないので・・・真剣に困ってるのでどうか宜しくお願いします。
996:デフォルトの名無しさん
05/01/24 22:03:38
>>995
COMポートってのは、実際にデバイス(仮想デバイスでもいいけど)がないと使えない。
急に「COM6が欲しい!」とか思ってもそうは行かない。
997:デフォルトの名無しさん
05/01/24 22:09:03
自宅のPCにもドットネット環境作れ。当然だろんなもん。はっきり言って真剣に勉強する意欲を疑う。
998:デフォルトの名無しさん
05/01/24 22:16:17
学生さん専用の格安の奴たしかあったよね。
学生さんはいいな。
ま、でもMSCommのライセンスが困るわけだが。
999:997
05/01/24 22:16:44
まぁオレなんて医者から脳みそが少ないって言われてから
真剣に生きる気もないけどな。
1000:デフォルトの名無しさん
05/01/24 22:18:13
終了
1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4846日前に更新/258 KB
担当:undef