VB.NET質問スレ (Part8) ..
[2ch|▼Menu]
852:デフォルトの名無しさん
05/01/18 13:07:56
フォームにテキストボックスを貼り付けました。
そのテキストボックスをダブルクリックすると
Private Sub TextBox1_TextChanged(...
というメソッドができました。
他のイベント(メソッド)はどのように作成すればよいですか?
VB6ではイベントの一覧から選べたのですが・・・
すみません。よろしくお願いします。


853:デフォルトの名無しさん
05/01/18 13:29:18
>>852
いま開いてるコードエディタの右上に見当たらないか?

854:デフォルトの名無しさん
05/01/18 13:49:40
>>853
通常はVB6と同じように表示されるのですか?
こちらでは
(Declarations)
Finalize
InitializeComponent
New
TextBox1_TextChanged
しか表示されていません。
何か設定があるのでしょうか?
ちなみに.NET2002です。

855:デフォルトの名無しさん
05/01/18 13:52:05
すみません。わかりました。
左のコンボボックスでコントロールを選択しないといけないのですね
ありがとうございました。

856:デフォルトの名無しさん
05/01/18 17:27:52
テキストボックスで、現在選択されているテキスト上にマウスカーソルが来た時、マウスポインタを変更。
現在選択されているテキスト上からマウスカーソルが離れると、マウスポインタを元に戻す。

ということをやりたいのですが、どのようにすればできるでしょうか?

テキストのサイズを測ってやるやり方だと、スクロール前なら何とかなるのですが、
スクロールが起こると座標が変化してしまい、位置がずれてしまいます。

857:デフォルトの名無しさん
05/01/18 18:16:54
あげ万

858:デフォルトの名無しさん
05/01/18 18:34:38



859:814
05/01/18 20:10:55
昨日ここに、java実行について質問したものです。
ちょっと用があって、今ここチェックしました。
いろいろ答えてくれた方々ありがとうございました。
どうも、エラーは、
Exception in thread "main" java.lang.NoClassDefFoundError:
こんなので、どうもクラスパス設定に問題があるようです。


860:デフォルトの名無しさん
05/01/18 20:14:17
>>859
じゃあインポートしているクラスが見えてないんじゃないの?
起動時に java -cp 〜 でクラスパスを指定すれば?

861:デフォルトの名無しさん
05/01/18 20:19:24
>>859
NoClassDefFoundError:
の後ろに何か付くだろ?

862:デフォルトの名無しさん
05/01/18 20:19:52
>>861
まったくだ。

863:デフォルトの名無しさん
05/01/18 20:20:28
>>861
バカのくせに、この情報は必要不要の判断を勝手にするから
なかなか正解に辿り着けないんだよな。

864:デフォルトの名無しさん
05/01/18 20:22:46
っていうか、昨日から釣りとしか思えないんだよな、回答する側も。
フォルダが違うか余計な拡張子付けてるかだけの話だろうに。

865:デフォルトの名無しさん
05/01/18 20:26:05
>>864
じゃあお前が早く解決してやれよ。

866:デフォルトの名無しさん
05/01/18 20:28:38
エラー出してるVBコード自体から、出てるエラーメッセージまで
余すところ無く全部吐き出してみそ。話はそれからだ。

867:デフォルトの名無しさん
05/01/18 22:01:59
もう誰かこいつと同じ事やってやれ
VBでボタンはっつけて、クリック↓これ
With Process1.StartInfo
.FileName = "java.exe"
.WindowStyle = ProcessWindowStyle.Normal
.Arguments = "Hello"
End With
Process1.Start()

javaは、↓これ
public class Hello {
public static void main(String[] args) {
for(;;){
System.out.println("Hello");
}
}
}

これまんまやって、ここのやつができたら,>>859
諦めろということだ

868:867
05/01/18 22:03:33
ちなみに俺は、家にjava入ってないから無理だ

869:デフォルトの名無しさん
05/01/19 00:21:21
あれできね、なんでだ

870:デフォルトの名無しさん
05/01/19 01:19:38
ゲームとかリアルタイムっぽい事するために、
スレッドの基本的な使い方まではなんとか分かったのですが、
正確に16msごとにループ(1秒に60回にするため)する制御が出来ません・・・
いまんとこGetTickCount()を使ってヘタレながらループしてるけど
このタイマーの精度は良くないっぽいです。。。

871:デフォルトの名無しさん
05/01/19 02:37:10
すいません、VB.NETの初心者ですが、
vb>netの使い方など分かりやすいサイトもしくは本
ってありますか?なんかたくさんありすぎて
困ってます。。

872:デフォルトの名無しさん
05/01/19 07:01:56
>>871
ム板の説明読んで来い

873:デフォルトの名無しさん
05/01/19 13:14:49
VB.NETには標準でデータを入力できるグリッドはありますますか?

874:デフォルトの名無しさん
05/01/19 13:17:40
ありますますます

875:デフォルトの名無しさん
05/01/19 13:29:57
>>874
DataGridでしょうか?
これはDBと接続しなくても使えますか?

876:デフォルトの名無しさん
05/01/19 13:34:00
使える。

877:870
05/01/19 13:35:27
いろいろ調べたんですが、mSecオーダで時間を返してくれるやつが無いです・・・。
間隔を測ってメソッドを呼ぶもの?は見つかりましたがそれじゃないです・・・。
誰か知りませんか?

878:デフォルトの名無しさん
05/01/19 13:37:46
>>876
どうも!
ちなみに使い方がわかるサイトなどあれば・・・・
だめ?

879:デフォルトの名無しさん
05/01/19 13:45:53
DataGrid貼り付けました。
カラムヘッダーを設定したいのですがそれらしいメソッドがありません。
激しくむずい

880:デフォルトの名無しさん
05/01/19 14:35:12
>>877
マルチメディアタイマを使うとか。分解能は1ms。
URLリンク(homepage2.nifty.com)
//って間隔を計って〜ってのはこれのことか?

QueryPerformanceCounter/QueryPerformanceFrequncyを使うとか。

881:イチゴ
05/01/19 14:43:38
vb.net2003でスキャンディスク・デフラグの自動実行・終了させたいのですが
どうすればいいですか?




882:デフォルトの名無しさん
05/01/19 17:54:29
Protected Overrides Sub Finalize()
っていつ動くの?
ブレーク張っててもさっぱり来ないんだけど・・・

883:デフォルトの名無しさん
05/01/19 18:05:45
GCに片づけられる時。
具体的には(或いは魔法の呪文的には)、
WeakReferenceによる参照を除く参照が無くなってから、
そのオブジェクトのジェネレーション以上のオブジェクトを片づけるGCが走った時。

実例を挙げれば、

Dim a As new Hoge()
a = Nothing
GC.Collect()

で発生する。

884:デフォルトの名無しさん
05/01/19 18:37:53
>>883
うわー、すごーい

885:デフォルトの名無しさん
05/01/19 22:24:37
誰でも読めるMSDNも読まずに質問してる奴が多いな。流石VB


886:デフォルトの名無しさん
05/01/19 22:35:40
>>885


887:デフォルトの名無しさん
05/01/19 22:39:52
ガベージコレクタの仕様は.NET開発者ガイドに明記してある。


888:デフォルトの名無しさん
05/01/19 22:54:34
仕方ないよ。VB6上がりが多いんだから。これからドットNETやるとなって、
C#があるのにわざわざ好き好んでVB選ぶ奴なんかいるわけないだろ。


889:デフォルトの名無しさん
05/01/19 23:04:15
それにしたって、マイクロソフトがせっかく手間ヒマかけて用意してくれた
ドキュメントを読もうとしないのはなぜなんだろうね。
あーいうのはちゃんと読んだほうが時間と労力の節約になるのになー。
字が読めないわけでもなさそうだし・・・

890:デフォルトの名無しさん
05/01/19 23:06:46
>>880
ありがとうございました。

891:デフォルトの名無しさん
05/01/19 23:42:19
>>887-889
ダ メ な 奴 は 何 を や っ て も ダ メ


892:デフォルトの名無しさん
05/01/20 00:15:49
テキストボックス(複数行)の文字列内の改行を他の文字に変換したいのですが、
どうしたらいいでしょうか?



りんご
ごりら
らっぱ



りんご→ごりら→らっぱ

893:デフォルトの名無しさん
05/01/20 00:31:44
>>892
悩みどころが全く分からない。

894:デフォルトの名無しさん
05/01/20 01:06:22
>>892
TextBoxのTextプロパティは改行を含めた文字列を持っているから、
適当に文字列操作関連のメソッドを使って好きな文字列に置換。


895:デフォルトの名無しさん
05/01/20 09:51:31
相談なんですが
VB.NETでOracleのデータベースへ接続する普通のC/Sアプリを
作ることになりました。
この際、Oracleへ接続する方法がいくつかあるようですが
お勧めはなんでしょうか?
OLE.NETやODP.NETなどがあるようですが・・・・
よろしくお願いします。

896:デフォルトの名無しさん
05/01/20 10:04:36
>>895
それならまずADO.NETのOracleClientを使いたくない理由を説明すべきだろ?

897:デフォルトの名無しさん
05/01/20 11:02:07
>>896
ADO.NETが標準的なやりかたですか?
ありがとう
OLE.NETがADO.NETだと思ってました。違うんですね。

898:892
05/01/20 14:06:20
ありがとうございました。
バッチリできました。

899:デフォルトの名無しさん
05/01/21 01:01:39
質問です。

Chr関数を使って文字コードを取得したいんですが、
128(&H80)以上になると文字コードが0と表示されてしまいます。

こういった場合はどうしたらいいですか?

900:デフォルトの名無しさん
05/01/21 01:06:55
>>899
アスキーコード表
URLリンク(www.shibu.jp)

901:デフォルトの名無しさん
05/01/21 01:21:35
たとえばパネルとかに、線とか画像とか描画した今、正にそれ自体を
Imageに格納できないのですか???
ファイルに保存はできるのに・・・。

902:デフォルトの名無しさん
05/01/21 01:22:13
>>900
やっぱり無理ッスよね・・・
諦めます

903:デフォルトの名無しさん
05/01/21 01:50:33
>>902
入力されたキーのコードを取得したいのか、コード表を生成したいのか
などなど、もう少し具体的に「何をしたいのか」を書いてくれないと、
できるのかできないのか、そもそも方法が合ってのかもアドバイスできません。

904:デフォルトの名無しさん
05/01/21 02:12:12
>>903
902です。
すいませんでした。説明不足で・・・。
具体的にはコード表を生成したいんです。
ですから0〜255(FF)の文字コードがあれば可能なんですけど、
chr関数には0〜127までしかなく、128以上は・・・。
もし、chr関数を使えないとしたら
chr関数を使わない別の方法でコード生成とかできる方法とかって
ありますか?

どうかよろしくお願いいたします。

905:デフォルトの名無しさん
05/01/21 02:39:31
>>904
文字コードの128以上に「何を」表示したいんだ?

906:903
05/01/21 02:44:24
>>904
以下の6つのコードを chr関数で Char型にして String型の1つの変数に
代入してごらん。128以上のコードが何に使われているのかが解るよ。
138 230 146 163 130 234

907:デフォルトの名無しさん
05/01/21 07:17:10
>>901
Imageに格納できないのですか?
自分がこんな質問されたらムカつかないのかな。

908:デフォルトの名無しさん
05/01/21 10:04:19
>>907
別にいいんじゃないか?
やり方を聞いてるわけじゃないし。
後出しで「じゃぁどうやればいいんですか」なんて言い出してきたら放置だが。

>>901
出来る。

909:デフォルトの名無しさん
05/01/21 11:10:55
諸先輩方教えてください。
VB6.0は結構やりました。
このたびVB.NETの仕事をやることになりました。
こういった人間が参考にしたらいい書籍がありましたら
教えてください。

910:デフォルトの名無しさん
05/01/21 13:06:00
幅が広過ぎてなんとも。
大きめの本屋でVB.NETの欄をざっと立ち読みしてみたら?

911:デフォルトの名無しさん
05/01/21 15:16:47
質問です。
HttpWebRequestでサーブレットと通信するソフトを作るのですが、中身をgzipで圧縮したり、解凍したいのです。
どこかにgzipのDLLはありませんか?
もしくは参考書、おすすめのHPとかないでしょうか。

よろしくお願いします。

912:911
05/01/21 15:19:30

すみません。
なんか誤解をまねくというより書き方がおかしいです。

×:サーブレット
○:Webサーバー

913:デフォルトの名無しさん
05/01/21 15:28:05
>>911
これは?
URLリンク(www.gzip.org)

914:デフォルトの名無しさん
05/01/21 15:31:38
URLリンク(www.icsharpcode.net)
マネージドならこれだな。

915:デフォルトの名無しさん
05/01/21 15:42:58
Compact Framework にてPDAのアプリを作り始めました。
・form1にはbutton1〜button4がある。
・それぞれクリックした時に画像ファイル名を引数で渡してform2を生成
・form2にはform1で選択した画像を大きく表示する。
こんなん作りたいです。でもよくわかりません。
[button1クリックでtest.jpgをform2に渡してform2のloadイベントで自身のpictureboxに取得した画像を表示]
の方法について教えてください。

916:デフォルトの名無しさん
05/01/21 16:40:58
普通にコンストラクタに書けばいいんじゃないか?

917:デフォルトの名無しさん
05/01/21 17:20:04
質問です。
Bというスレッドで作ったコントロールを、Aというスレッドで作ったフォームに貼り付けたいのですが、どうすればよいでしょうか?

918:デフォルトの名無しさん
05/01/21 17:26:29
諦めてフォームが動いているスレッドでコントロールを作るようにする。

919:911
05/01/21 17:28:05
>913
>914

ありがとうございました。
やってみます。


ただ、英語が…orz

920:デフォルトの名無しさん
05/01/21 17:35:08
英語のドキュメントぐらい読めないとやってけないよ。
技術系のドキュメント英語は基本的に平易だし。

921:デフォルトの名無しさん
05/01/21 18:49:13
俺は難解な日本語のMSDNを四苦八苦しながら読んでいるうちに、
英語のMSDNもなんとなく読めるようになった気がする。(w

922:デフォルトの名無しさん
05/01/21 20:52:04
M$の訳はおかしいから日本語と英語見比べないとはまる事もあるぞ。

923:デフォルトの名無しさん
05/01/21 22:20:28
実情は米M$の外注に勤める日本人PGが
和英辞典片手にせっせと書いてたりするがなw

924:デフォルトの名無しさん
05/01/21 22:26:55
なんかきな臭いときは必ず英語版も確認するようにしてる。


925:デフォルトの名無しさん
05/01/21 23:39:43
画面のプロパティでDPI設定を「大きいフォント」に変更すると
フォームのレイアウトが崩れてしまうのですが、どう対処
したらよいでしょうか。

おそらくFormのAutoScaleというプロパティが関係あると
思うのですが、これをTrueにしただけではダメでした。
他に注意しなければならないプロパティ等はあるでしょうか。

926:デフォルトの名無しさん
05/01/22 00:03:22
テキストファイルからStreamReaderで1行ずつ読み込み、それを指定ミリ秒毎に
送信ってなものを作ろうとしてるんですけど、ツールのタイマーコントロールって
精度悪いですよね?1秒単位とか500ミリ秒単位なら大丈夫っぽいけど
200ミリ秒単位くらいからかなり精度が怪しくなります。
高精度のタイマーを作るにはやっぱりAPI使うしかないんでしょうか?
APIはさっぱり分からないので、どなたかいいサイトなんかありましたら
教えてください。

927:デフォルトの名無しさん
05/01/22 00:08:21
System.Timers.Timerを使う。

928:デフォルトの名無しさん
05/01/22 02:07:33
>>926
.NETはどうかしらんが、6.0時代はTimerを使うと処理の間隔が
マシン環境によって変わってくるからなぁ・・・。

スレッド立ててループで回して送信したら?

929:デフォルトの名無しさん
05/01/22 02:18:17
まずはドキュメント読もうや。
URLリンク(www.microsoft.com)


930:デフォルトの名無しさん
05/01/22 02:23:20
>>907
何か良く分かりませんが、迷惑掛けたのならあやまります。
すみませんでした。

931:デフォルトの名無しさん
05/01/22 07:16:27
>>930
よく分からずに謝っても意味がない。

932:デフォルトの名無しさん
05/01/22 14:07:06
vbではglobalでフォーム間の共通変数がみれたのに
vb.netはなくなったのですか?
どうやればいいのだろう?

933:デフォルトの名無しさん
05/01/22 14:15:12
>>932
少し上のレスを読め

934:デフォルトの名無しさん
05/01/22 14:18:22
>>926
ていうか本当にmSec単位で処理する必要なんてあるの?
こういうこと書く人って9割方本人の「思い込み」で書いてると思う。

935:デフォルトの名無しさん
05/01/22 15:43:36
気になるな。テキストファイルの1行ごとを定期送信するのにAPIのタイマーじゃ精度不足って
どんな案件なんだろうか。


936:デフォルトの名無しさん
05/01/22 18:14:11
他プロセスの動作負荷にはげしく増減があるとか?
‥‥つか、パソコンの処理能力が足りてないのかも。

937:デフォルトの名無しさん
05/01/22 18:45:13
いや、そういう意味じゃなくてmSecオーダーのリアルタイム性が要求される処理なんて
そんなにないんだよ。

単に「バッファ」って考え方がわかってないだけのような気がするんだけど。

938:デフォルトの名無しさん
05/01/22 20:49:14
Javaで言うHTMLEditorKit.Parserみたいなクラスはないでしょうか。

939:デフォルトの名無しさん
05/01/22 20:54:16
すいません。どなたか>>925をお願いします。

940:デフォルトの名無しさん
05/01/22 21:07:41
>>939
人に物を尋ねるときはまず自分の問題が他人に正確に過不足なく伝わるような
文章を書くこと。

他人に「エスパー」であることを期待しないこと。
こんなの中学卒業までにしっかりマスターしとけよ。

フォームのレイアウトが崩れるって言われてもねえ。。

文章で問題を表現する自信がないなら、
とりあえずどっかのアプロダに画像上げるとか手はあるでしょ。

941:デフォルトの名無しさん
05/01/22 21:10:49
>>940
わかんないのか・・・

942:デフォルトの名無しさん
05/01/22 21:11:23
938は具体的にそのクラスがどういう機能なのか説明すべきだな。

943:941
05/01/22 21:11:41
他の方どうぞー

940さんはもう書き込まなくていいですよ。

944:デフォルトの名無しさん
05/01/22 21:12:52
>>942
はあ?説明しなきゃいけないの?常識として知っといてほしいな。
まぁあんた以外には伝わってると思うが・・・

945:デフォルトの名無しさん
05/01/22 21:13:25
随分下手な煽りだな。

946:デフォルトの名無しさん
05/01/22 21:14:08
>>945
わかんないのか・・・なんでわかんない奴に限って書き込むんだ?

947:946
05/01/22 21:18:09
おっとと・・・そう書いたらみんな黙っちまったか。
ホントしょーもねー奴ら

948:デフォルトの名無しさん
05/01/23 01:15:47
>>938
ある。
以上。

949:938
05/01/23 08:24:46
>>948
あれ?とっくに自己解決してたんですけど。知ってますよ。
調査に何時間もかけちゃいました?だとしたらすいません。

950:デフォルトの名無しさん
05/01/23 10:32:45
forループ処理でコントロールのロックを防ぐ、DelphiでいうとProcessMessageのような
機能は.NETではどのようにするのでしょうか?

951:最凶VB厨房
05/01/23 10:49:25
Application.DoEvents()かな。

952:950
05/01/23 11:39:09
>>951 ありがとう。

953:デフォルトの名無しさん
05/01/23 12:39:18
>>951
純粋に問われたことに対する答えとしては正しいけどなんかなあ。

こういう質問には、「そもそもUIスレッドにそういうコード書くのが間違い」
って答えが正解だと思う。

954:デフォルトの名無しさん
05/01/23 18:26:23
>>953
大正解。スレッド作ってそっちで処理だね。


955:デフォルトの名無しさん
05/01/23 19:16:46
>>953
いいじゃん別に。お前が使うんだからさ。

956:デフォルトの名無しさん
05/01/23 19:40:32
>>954
そして>>917のような状況に陥ると。


957:デフォルトの名無しさん
05/01/23 20:23:43
フォームを作成すると拡張子がresxというファイルができているのですが、
これは何のファイルなのでしょうか。

958:デフォルトの名無しさん
05/01/23 20:38:50
>>957
URLリンク(www.microsoft.com)

URLリンク(www.atmarkit.co.jp)

959:デフォルトの名無しさん
05/01/23 21:12:45
他のプロシージャで使っていた変数を他のプロシージャで使うにはどうすれば良いですか?
教えてください

960:デフォルトの名無しさん
05/01/23 21:16:10
>>959
モジュールに記載

961:デフォルトの名無しさん
05/01/23 21:29:27
スレリンク(tech板:190番)
マルチポストか?

962:デフォルトの名無しさん
05/01/23 21:43:52
>>959
プロシージャ外で宣言。

963:デフォルトの名無しさん
05/01/23 21:46:45
>>962
どうやればよろしいのでしょうか?

964:デフォルトの名無しさん
05/01/23 22:03:47
>>963
古い資料だけど参考になる。
URLリンク(www.sakai.zaq.ne.jp)

965:デフォルトの名無しさん
05/01/24 11:29:02
DataGridで選択した行を削除するボタンを作ってます。

1、DataGridでマウスクリックし特定の行を選択
2、Form上の削除ボタンを押して、該当行の削除
3、ひととおり削除処理が終わったら、マスターファイル更新

コード上ではこんな感じです。

a、クリックした行をCurrentRowIndexで取得して
b、DataRow.DeleteでRowStateを変更
c、終了時にDataAdapter.Updateでマスターファイルを更新

しかし、この方法で1−2の手順を繰り返し、複数回の行削除を行
おうとすると、RowIndexがダブってしまい誤動作を引き起こします。

最終行以外を消すと、DataGrid上の表示とDataTable内のIndexに
不整合が起こるからだと思います。AcceptChangesを適用すると
DataGrid上では問題なく削除できますが、RowStateが変わってし
まうため、今度はマスターファイル更新ができなくなります。

DataGrid上で直接削除すればいいんでしょうが、大量にある行か
ら特定のものを見つけるのに時間がかかります。最悪、DataView
で抽出して直接削除という手段を考えていますが、1−3の手順で
他にうまい方法はないでしょうか? 長文すみません。(´・ω・`)

966:デフォルトの名無しさん
05/01/24 11:34:55
URLリンク(www.atmarkit.co.jp)

967:デフォルトの名無しさん
05/01/24 11:43:33
 Win32APIを呼ぶ方法がうまくいかないので悩んでいます。
 具体例としてウィンドウ上のボタンを押すと、user32.dllのExitWindowsExを
呼ぶというプログラムを作ろうとしました。

【実装】
1) 普通にウィンドウ上にPushボタ(Button1)を1つ配置した。
2) (全般) - (Declarations)のところに

Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Public Const EWX_LOGOFF = 0

というExitWindowsExを用いるための宣言を行う。

3) (Button1) - (Click)のところに

Dim lngWin32apiResultCode As Long
lngWin32apiResultCode = ExitWindowsEx(EWX_LOGOFF, &HFFFFFFFF)

という変数宣言と呼び出しを行った。

【現象】
Form1.vb(1) : error BC30001: 名前空間のステートメントが無効です。
Form1.vb(2) : error BC30001: 名前空間のステートメントが無効です。
Form1.vb(62) : error BC30451: 名前 'ExitWindowsEx' は宣言されていません。
Form1.vb(62) : error BC30451: 名前 'EWX_LOGOFF' は宣言されていません。
といった具合にBuildもできません。

【疑問】
 なぜ、宣言がことごとく否定されてしまうのでしょうか?


968:デフォルトの名無しさん
05/01/24 11:53:08
>>967
FormモジュールにDeclare文を書くことはできたっけ?

969:デフォルトの名無しさん
05/01/24 11:55:27
>>967
>  2) (全般) - (Declarations)のところに

と言うのが良くわからんが、

>  Form1.vb(1) : error BC30001: 名前空間のステートメントが無効です。

は要するに名前空間直下に関数を宣言してるってエラーで、
例えばImports文のすぐ下にClass宣言も無しにいきなりメソッドを書いてるようなもの。

モジュールを追加するなりしてそこでAPI宣言をすればいいだろう。

>  Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

あとVB.NETでは32ビット値はInteger (.NET FrameworkでいうInt32) だよ。

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

4840日前に更新/258 KB
担当:undef