VB.NET質問スレ (Part6) at TECH
VB.NET質問スレ (Part6) - 暇つぶし2ch521:デフォルトの名無しさん
04/08/15 01:15
>>516
「VB.NET単体でVS.NETと同じようなテキストエディタが用意されているのか?」
と言う質問ですか?
それなら答えはYesです


522:デフォルトの名無しさん
04/08/15 01:29
>>517
俺には>>513の意味はぱっと見て分からなかった。
誤解を招く表現がいくつかあるから、意味を取れなくても無知かどうかは分からんのじゃないの?
逆にやりたいことと>>513の書き込みを見て違和感も感じないなら、その方が無知の可能性あり。


523:513
04/08/15 10:12
すみません。難解な文章を書いてしまって・・・もう一度、書いてみますと
UserControl上にButton1を追加します。そして、Button1をデザイン上で設定出来るようにする為にプロパティを追加しました。(UserControlのコードを下記に記載)
そして、ビルドを行いUserControl1.dllを生成し、Windowsアプリケーションの別プロジェクトを立ち上げ、アイテムの追加と削除より、UserControl1.dllを追加します。
Form上にUserControl1を貼り付け、プロパティを見ると、tButtonが出来ています。
そのtButtonプロパティの値を変更(Textに"hoge"をセットする)とデザイン上では、Button1の表示が"hoge"となります。
この状態で、実行してみると、Textに"hoge"とセットしていたはずなのに、"hoge"と表示されず"Button1"と表示されます。
このように、プロパティで設定した値が、実行時には全く反映されません。
どのようにすれば良いのでしょうか?

>>519
Button1をPublicに変更して行って見ましたが、プロパティで設定した値は、デザイン上では
変わっているのですが、実行時には反映されませんでした。

Public Class UserControl1
Inherits System.Windows.Forms.UserControl

#Region " Windows フォーム デザイナで生成されたコード "

<System.ComponentModel.Browsable(True) _
, System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Content)> _
Public Property tButton() As Button
Get
Return Me.Button1
End Get
Set(ByVal Value As Button)
Me.Button1 = Value
End Set
End Property
End Class

524:516
04/08/15 12:51
>>521
ありがとうございます。

525:デフォルトの名無しさん
04/08/15 13:10
>>523
デザイナで生成されたコード内に、プロパティの変更コードは出てる?


526:デフォルトの名無しさん
04/08/15 15:33
エクスプローラの詳細表示のような、横に複数項目表示できるリストボックスって
VB.NET標準コントロールには無いの?

527:526
04/08/15 15:46
悪い。自己解決した。ListViewだったね

528:デフォルトの名無しさん
04/08/15 22:31
test

529:デフォルトの名無しさん
04/08/16 09:04
>513
どっかで見た質問だなぁ。
どこで見たんだろ……まぁいいや。

そんときは
>#Region " Windows フォーム デザイナで生成されたコード "
この中で初期化してた、ってオチだったよ。

530:デフォルトの名無しさん
04/08/16 09:35
>>513
そもそも、Button1のプロパティを全て公開する必要があるの?

ユーザーコントロールにカプセル化するんだから、
必要なプロパティのみを公開すべきじゃない?

Public Property ButtonText() As String
  Get
    Return Button1.Text
  End Get
  Set(ByVal Value As String)
    Button1.Text = Value
  End Set
End Property

他にも必要なら、
ButtonBackColor とか、
ButtonFont という風に追加すればいいのでは?

531:MSサンプルにバグ?
04/08/16 09:48
URLリンク(ja.gotdotnet.com)
リモート処理の概要 参照によってオブジェクトを渡すのサンプルを実行すると、
セキュリティ制限のため、型 System.Runtime.Remoting.ObjRef にアクセスできません。
というエラーがでます。
クライアント、リモート オブジェクト、およびリモート ホスト アセンブリを異なるディレクトリに置いてサンプル実行しています。
対策ご存知の方、教えてください。

532:自己解決
04/08/16 18:43
>>531自己解決。お騒がせ↓
URLリンク(www.microsoft.com)

533:513
04/08/16 23:08
>>529
確かに
#Region " Windows フォーム デザイナで生成されたコード "
の中は、デフォルトのままです。具体的には、どのように修正すれば宜しいのでしょうか?

>>530
確かに、通常は必要と思われるプロパティのみ公開するのですが、
ボタンコントロールなどは、予めどれが必要と言われると、ほぼ全部使う可能性があると思われます。
その場合、数十にもなるプロパティを記述していくのは・・・という事と、
勉強も兼ねて、コントロール自体のプロパティを全て公開するにはどうするのだろうと、疑問に思い
質問した次第です。


534:473
04/08/17 14:52
483さんの方法でやってみたらうまく行きました。ありがとうございます。

535:デフォルトの名無しさん
04/08/19 17:03
APIを使いたいんですが
関数の形は
void __stdcall fncSub(struct Info *p);
って形になっていて
Public Declare Sub fncSub Lib "HOGE.DLL" (ByRef p As Info)
という風に宣言して
fncSub(p)
というように呼び出したんですが、
「'System.NullReferenceException' のハンドルされていない例外が test.exe で発生しました。
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。」

て出るんです。
どのようにすれば正しく呼び出せるのでしょうか。
よろしくお願いします。

536:デフォルトの名無しさん
04/08/19 17:28
ぬるり

537:デフォルトの名無しさん
04/08/19 17:39
データアダプタで質問させてください。

まず前作業としてMDBでテーブル2つとビュー1つを作成します。

TABLE1
  ID,FIELD_1,FIELD_2 (キーはID)

TABLE2
  ID,FIELD_A,FIELD_B (キーはID)

VIEW1
  ID,FIELD_1,FIELD_2,FIELD_A,FIELD_B


さて、ここでVB.NETからVIEW1のデータアダプタを作りたいのですが、
構成ウィザードで警告が出てしまい、UPDATEとDELETEについてコマンドが作成されません。
アダプタ自体は作成できるのですが、削除が実行できないのです。
どうしたらいいんでしょうか・・・

TABLE1とTABLE2の2つアダプタを作って、それぞれに削除かけないとだめなのかしら・・・
VIEWで一発ですませたいんですが・・・

538:デフォルトの名無しさん
04/08/19 17:49
あ、警告はちなみに一意に識別する列を作成できませんでした、とかいうやつです。
キーがあるから一意のはずだし、Accessからは削除できるのに・・・なぜ・・・

539:デフォルトの名無しさん
04/08/19 20:23
>537-538
DBは何を使ってるんだよ。
DBから主キーを取得できてないって事。

540:デフォルトの名無しさん
04/08/19 22:10
>>536
ガッ

541:535
04/08/19 22:37
535です。
どうやらAPIのほうが悪かったようで
void __stdcall fncSub(struct Info *p); は
extern "C" HOGE_API void __stdcall fncSub(struct Info *p);
という風にするのを忘れていたようです。

それで、後者のほうにDLLを修正したところ、今度は
「'System.ExecutionEngineException' のハンドルされていない例外が
mscorlib.dll で発生しました。」
というエラーが発生しました。
これはどういうエラーなんでしょうか。
ググったりMSDNで調べたりしましたがいまいちわかりません。
分かる人がいましたら解決方法を教えてください。
よろしくお願いします。


542:デフォルトの名無しさん
04/08/19 23:32
そのAPIって参照設定で読み込めたりしないのかと横着を考える

543:541
04/08/20 00:50
>>541
参照設定をしようとしたら「有効なDLLじゃない」とエラーが出て
設定できませんでした。

ところで、使っている構造体の形は

struct Info{
char A[10][1024];
char B[10][512];
char C[10][512];
};

って形になっているんですけど、VBでこの構造体を宣言するには

Public Structure Info
Dim A() As String
Dim B() As String
Dim C() As String
End Structure

でいいんでしょうか?教えてください。お願いします。

544:デフォルトの名無しさん
04/08/20 08:15
>>543
だめ。構造体の宣言で、マーシャリングをきっちり指定する必要あり。
結構面倒だよ。

545:デフォルトの名無しさん
04/08/20 17:04
.netであるクラスのプロパティを動的に参照するため

wk1 = ClassA.PropA
wk2 = ClassA.PropB



wk1 = ClassA.xxxx("PropA")
wk1 = ClassA.xxxx("PropB")

のような感じにしたいのですが
どのようにコーディングすればよいでしょう???

VB6時代だとProperties("PropA")のようなことができた気が…

546:デフォルトの名無しさん
04/08/20 18:50
VB よくわかんないけど、例えばクラス ClassA の静的プロパティの場合
val = typeof(ClassA).GetProperty("PropA").GetValue(Nothing, Nothing)

インスタンス a のプロパティの場合
val = GetType(a).GetProperty("PropA").GetValue(a, Nothing)

とかかなあ・・・ Object が帰ってくるから、型変換は必要。
あとプロパティの一覧を得たいなら、System.Type.GetProperties メソッドが使えます。

547:546
04/08/20 18:50
>>546
スマソ。typeof は C# か。

548:デフォルトの名無しさん
04/08/21 00:55
>>546-547
>GetType(a).GetProperty("PropA").GetValue(a, Nothing)

書き込み後なんとかGetType(a).GetProperty("PropA")のプロパティ情報列挙までは自己解決していましたが
GetValue()の配列indexの使用法を間違ってました。

配列要素でないときはNothingなのかー!

激さんくすです!!

549:デフォルトの名無しさん
04/08/21 17:42
データーグリッドを使って、データーを表示させた際に、グリッド右端をクリックすると
幅が自動で広がりますが、あれをプログラムでやらせることは出来るでしょうか?

550:デフォルトの名無しさん
04/08/21 19:09
MSDEとVBの組み合わせで、"display_order"をintに設定して

SqlDataAdapter1.SelectCommand.CommandText = "SELECT * FROM pc_data ORDER BY display_order "

とやると数値が大きなものが上にきてソートされます。

SqlDataAdapter1.SelectCommand.CommandText = "SELECT * FROM pc_data ORDER BY display_order DESC"

とやれば、小さい順にソートされるかな・・・とやってみたのですが、うまく動きません。何が間違っているのでしょうか?

551:デフォルトの名無しさん
04/08/21 20:17
どうでもいいけど昇順と降順間違ってないか?


552:デフォルトの名無しさん
04/08/21 22:05
いろいろ

553:デフォルトの名無しさん
04/08/21 22:51
まだVB.NET初めて間もないのですが
以下のようなコードで「オブジェクト参照のインスタンスがありません」
とエラーが出てしまいます。

dim wrk_item() as string

wrk_item(0) = "テキスト"  ←ここでエラーが起こってます
wrk_item(1) = "テスト"

エラーの原因がわかりません。配列の要素数はあらかじめ決めておかないと
だめなのでしょうか・・・

554:デフォルトの名無しさん
04/08/21 23:17
dim wrk_item() as string = { "","" }



555:デフォルトの名無しさん
04/08/21 23:19
「配列を参照する事のできる」変数を定義しただけで、
「配列自体を作成」していない。変数の初期もしていない。
よって「配列を参照する事のできる」変数はNothingのままだから以下省略

556:デフォルトの名無しさん
04/08/21 23:20
>>554
ありがとうございます
やはり配列要素を決めておかないとだめみたいですね

557:デフォルトの名無しさん
04/08/21 23:22
>>555
なるほど、そういうことでしたか・・・


558:デフォルトの名無しさん
04/08/21 23:33
>553
ArrayListとかReDimとか使えば?

559:デフォルトの名無しさん
04/08/22 10:21
ボクのPCはDELLのディメンションですがVB.NETをうごかしてもこわれないでしょうか?

560:デフォルトの名無しさん
04/08/22 10:24
残念ながらどこのPCでも壊れるときは壊れます。

561:デフォルトの名無しさん
04/08/22 14:15
まあ、基本的にはArrayListあたり使うのが常套かな。


562:デフォルトの名無しさん
04/08/22 18:56
>>559
VisualStudio.net入れると壊れる可能性が高いですね。

563:デフォルトの名無しさん
04/08/23 09:19
>>550
ここは初心者の来る場所じゃありませんYOwwwwwwwwwwwwwwwwwwwwwwwww

564:デフォルトの名無しさん
04/08/23 12:35
かといって高度な問題には解答が出来なかったりする

565:デフォルトの名無しさん
04/08/23 13:57
変数のタイプっの取得なんですが・・・

dim val
dim s as String = ""

val = s.GetTypeCode
なら結果 String ですが


dim val
dim s as String

val = s.GetTypeCode

で初期化していないと当然 sは生成されていないので.GetTypeCodeが取れません。

初期化されてない変数タイプ取得ってどう記述しますか?

566:565
04/08/23 14:02
あ、ちなみに上記で

GetTypeCode(s)

で Object が返るのですが Dimで定義されている String を返したいのです・・・

567:デフォルトの名無しさん
04/08/23 16:17
>>550
どう動かないのかというのが良くわからないが、データーグリッドの表示順を変えたいだけなら

データセット名.Clear()
SqlDataAdapter1.SelectCommand.CommandText = "SELECT * FROM pc_data ORDER BY display_order"
SqlDataAdapter1.Fill(データセット名, "car_data")

としてやるだけでいけると桃割れ。

568:デフォルトの名無しさん
04/08/23 16:34
って"car_data"ってなんだよ"pc_data"ねw。

ところで、ここの上のほうにあるデータグリッドの幅をデーターの長さに自動であわせて表示するっていうの
を、どなたか出来る方いませんか?



569:546
04/08/23 16:44
>>565-566
無理。そもそも String が帰る時だって、値の型を取得しているだけで
"変数" のタイプを取っているわけじゃないし。

570:デフォルトの名無しさん
04/08/23 21:02
>>569
よくわからんが無理ってことはないんじゃないか?
むしろインスタンスからしか型に関する情報を取れないなんてライブラリの方が
不条理な気がする。

URLリンク(www.microsoft.com)

URLリンク(www.microsoft.com)
の組み合わせでいけるんじゃないだろうか。

571:546
04/08/23 23:56
>>570
 レスされたので答えるけど、その手のメソッドでは無理。
IL にコンパイルされた後はそもそもローカル変数なんて
タイプ情報にも存在しなくなっちゃうんで、
「ローカル変数が何型で宣言されたか」ってな情報を得るには、
ライブラリではなく言語自体によるサポートが必要。

値型 (value types - 単純型や structure) のものなら、
変数宣言と同時にインスタンスが作成されるので大丈夫だけど(と思う)

572:デフォルトの名無しさん
04/08/24 00:37
>>565
ちなみになんでそんなことがしたいわけ?
>>571も言ってるけど、ライブラリじゃなくて言語仕様で
そういう機能があるかどうかの問題になるね。

573:565-566
04/08/24 00:55
>>569

>値の型を取得しているだけで
>"変数" のタイプを取っているわけじゃないし。
私も同様の認識だったのですがデバッグ中に…

Dim s As String

直後のステップをブレーク、イミディエイトにて

?type.GetTypeCode(s) 

と実行した際、

「型 'String' の値を 'System.Type' に変換できません。」
といったメッセージが出たもので…

「あれ?エラーだけどここで'String'と認識するってことは…なにかしらの記述で変数のタイプも取得できるのか???」と…


574:デフォルトの名無しさん
04/08/24 11:51
Form1で
    Dim f2 As Form2
    f2.show()

のようにしてForm2を表示して、そのForm2からForm1のTextbox1の内容を操作するにはどうしたらいいんですか?
Form1からForm2の操作はできるんですが・・・その逆を行おうとするとエラーがでます。

575:デフォルトの名無しさん
04/08/24 12:31
またVB6から進化できてない人間が迷い込んだな。。

576:デフォルトの名無しさん
04/08/24 12:39
だから旧VBスレも合わせて、スレの>>1のテンプレに愚問集作ってそこに

 『別フォームの……』

を入れとくべきだろう。

577:デフォルトの名無しさん
04/08/24 12:39
ここは初心者の来る場所じゃありませんYOwwwwwwwwwwwwwwwwwwwwwwwww

578:デフォルトの名無しさん
04/08/24 12:50
そして、煽りも要りませんので・・・

とりあえず過去ログ読みまっしょ

579:デフォルトの名無しさん
04/08/24 13:23
>>577
すいません
初心者はどこへ行けばよいですか?

580:デフォルトの名無しさん
04/08/24 14:15
>>579
ここは2ちゃん。「うるせー馬鹿」が返しの挨拶。

581:デフォルトの名無しさん
04/08/24 14:51
あの~
いつぞやに、.NETの板が出来たと思っていたのですが、
あれは夢だったのでしょうか?

582:デフォルトの名無しさん
04/08/24 15:55
>>581
( ゚Д゚)氏ね

583:デフォルトの名無しさん
04/08/24 19:46
>>581
>>224のことか?

584:デフォルトの名無しさん
04/08/24 21:39
>>577
初心者の来る掲示板だと思います。ぼくはね。

で、>>574 みたいなのは、ハンドル渡すとか、
Form1 のほうで面倒見てあげるとかして実現は可能だと思う。

いまだによくわからないのだけど、答えはどっちなん?
「コードを工夫して実現する」 or
 「かっこ悪いからやってはいけない」

585:デフォルトの名無しさん
04/08/24 21:51
>>574
解1. Form2 のプロパティにForm1 のインスタンスをセットしておいてForm2 の方からはそれを介して使う。
解2. アプリケーション実行中にForm1 のインスタンスが高々1個しか無いことが確かなら、Form1 クラスに
     静的プロパティとして Form1 のインスタンスを保持して、Form1.ActiveForm のようにしていろんな所から使う。

586:513
04/08/24 22:32
誰か解を求む・・・_| ̄|○

587:デフォルトの名無しさん
04/08/24 22:35
>>586
問題のソース圧縮してどっかにうpすれば?

588:デフォルトの名無しさん
04/08/24 22:47
>>585
例外的な場合を除けば、どっちも不正解だと思う。
そんなことをすればデータ隠蔽の効用が全部失われてしまう。

実際にデータを持つオブジェクトからハリボテ君(Form1)に
イベントで通知するのが正解だろう。

589:デフォルトの名無しさん
04/08/24 23:14
>そんなことをすればデータ隠蔽の効用が全部失われてしまう。
その判断の根拠を教えてくれ。
って>>584の言ってる事の方が普通じゃないと思うが…

590:デフォルトの名無しさん
04/08/24 23:40
ヴァカ降臨!
URLリンク(www.atmarkit.co.jp)


591:駆け出し
04/08/24 23:49
ちょっと気持ちの悪いエラーが出ているので質問です。

Button1 と TextBox1を配したForm1のButton1のクリックイベントで

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim parameter As Integer
  Do While ( 処理続行条件 = True )
  Application.DoEvents()
  parameter = CInt(TextBox1.Text)
          ・・・                    'parameter を使った処理
Loop
End Sub

というように、TextBox1からパラメータを入力してループ処理に反映させるコードを書き、
デバッグモードでビルドエラーも出ずに一見正常に動作する所まできました。
ところがDo While ループが回っている最中にForm1の右上の「X」ボタンをクリックして強制終了させると、
parameter = CInt(TextBox1.Text) の行のところで

'System.InvalidCastException' のハンドルされていない例外が microsoft.visualbasic.dll で発生しました。
追加情報 : 文字列 "" から型 'Integer' へのキャストが有効ではありません。

とエラーが出てしまいます。
なにぶんど素人なもので、どうしてエラーが出てるか良く分からないし、分からないと気持ち悪くて使えないし・・・
どなたか、エラーが出ている原因をご教授願えないでしょうか


592:デフォルトの名無しさん
04/08/24 23:59
TextBox1.Textが""なんじゃないの?

593:駆け出し
04/08/25 00:06
>>592
TextBox1の中身は(目で見る限り)整数が入っています。
実際、ループ中の強制終了さえしなければ妥当な結果が得られています。

アプリケーションの終了でTextBox1の中身がクリアされてしまう、と言われれば
なんとなくそうかなあとは思うのですが、
素人考えでは、「X」ボタンのクリックが処理されるのは ”Application.DoEvents()”
のところであって、だとするとわざわざその次の行まで処理が進んでエラーが出るのも
おかしいんじゃないかと思ったり、悶々と悩んでいる次第です。



594:デフォルトの名無しさん
04/08/25 00:31
うーん、細かい内部動作までは知らないんだけどさ…
Application.DoEvents()でフォームが閉じるわな。
閉じ終わったら処理が戻ってくるわな。
Windowの破棄とかが具体的にどのタイミングなのかは知らないけど、
この時点でTextBoxが空になってるというのはありえそうな話だ。
まあ、ObjectDisposedExceptionになりそうな気もするけどそこはそれ。

勘違いしてそうだが、×ボタンクリック=アプリケーションその場で強制終了じゃないぞ。
ちゃんと最後まで処理は続く。

595:デフォルトの名無しさん
04/08/25 00:34
DoeventsだからこそForm Unloadとその他のプログラムの動作がマルチタスクで動く。
ところでDoevents中に×ボタンを押したときにちゃんと終了するプログラムを書けるかどうか見守ってやる

596:592
04/08/25 00:37
書こうと思ったら>>594氏が書いてくれたか
Application.DoEvents()で閉じる処理を拾った後(フォームが破棄されてる)に
parameter = CInt(TextBox1.Text)を実行してるから空っぽ
DoEventsはどの順序でイベントが発生したか追跡が難しいから
あまり使うことはおすすめできない

597:デフォルトの名無しさん
04/08/25 00:38
>>589
>>584が正しいなんて全く言ってないけど。。

「データ隠蔽の効用が失われる」は正しい言い回しじゃないが、
要するに>>585のようにしたのでは、たとえばフォームならフォーム上のコントロールの
制御の責任者とそのタイミングの明確さが失われるってことだ。

テレビに例えれば、ケーブルで繋がってるのなら映像がどっから流れてきているかは
ケーブルを追っていけば自明だが、「パブリックな」電波だったら映像がどっから来ているか
追跡するのは大変だよ。

よく知ったかクン(俺もその一人だが。。)が「UIとロジックを分離する」
なんて知った風なこといってるでしょ?要するにそれだよ。

598:デフォルトの名無しさん
04/08/25 00:41
ちゃんとフラグ管理やらEnable False やら工夫すればDoevents使いまくりでとても軽くて快適なアプリができるぞ

599:デフォルトの名無しさん
04/08/25 00:52
スレッド使えるようになったのにわざわざDoEventsなんていう
面倒で危ない橋を渡る理由が浮かばない。

マルチスレッドがよほど難しいならともかく、
直接UIいじらない単純なバックグラウンド処理なら屁みたいなもんなのに。


600:駆け出し
04/08/25 00:54
レスくれたみなさん、ありがとうございます。
どうも Application DoEvents() の処理のタイミングについて誤解があったようですね。
ちょっくら関連ドキュメントなぞ当たって勉強してみます。

VBは奥が深いと言うか何と言うか、やればやるほど
過去に書いた見掛けだけ正常に動くコードのインチキさ加減が露になってくる・・・

601:デフォルトの名無しさん
04/08/25 01:02
まあ、EnabledをFalseにするとかでもはや別スレッドでやるのと
同じくらい流れが明確なのであれば、そんなに危険があるわけではないが、
>>599の言ってるとおり、それがスレッドでやるより特別に簡単てわけじゃない。
単発処理自体が重かったり、常にDoEventsを行う事を考えるくらいなら、
むしろ別スレッドの方が簡単確実だ。

602:デフォルトの名無しさん
04/08/25 07:45
どんな.NETアプリでもあちこちにDoevents挿入しとかないと他のアプリが重くなっちゃうというのが.NETアプリを使ってるときの体験法則

VB.NETアプリが動作中にタスクバーにある他のアプリをクリックしてアクティブにするときに重さを感じる

603:デフォルトの名無しさん
04/08/25 08:14
>>602
DoEventsの意味がわかってない予感。。
ついでにプリエンプティブって意味もわかってない予感。。

しかし、これをプログラマの世界もオーディオみたいにプラシーボに
騙される人が出るほどレベルが低下していると見るべきか、それだけ
層があつくなったと見るべきか。

604:デフォルトの名無しさん
04/08/25 09:03
>586
VB6の時はPropertyBagオブジェクト使ってたが、.NETだと違うみたいだ。
MSDNでPropertyBag調べて見れ。
.NETではどうすればいいかわかる。

605:774.sln
04/08/25 10:14
質問です。
Windows2000で組んだアプリケーションが、Windows2000では起動するんですが
WindowsMeで起動しないんです。
デバッガで調べたら
「アセンブリファイル Microsoft.VisualBasic.Compatibility が見つかりません」
と出ているんですが、これはどういうことなんでしょうか?

環境は
Windows2000 / Microsoft .net Framework v1.1
WindowsMe / Microsoft .net Framework v1.1

です。よろしくお願いします。

606:774.sln
04/08/25 11:03
すみません解決しました。
WindowsMeには「Microsoft.VisualBasic.Compatibility」がインストールされないらしく
「参照設定」で「ローカルコピー」をTrueにしたら起動しました。

スレ汚しすみませんでした。

607:デフォルトの名無しさん
04/08/25 13:37
>>602
( ゚Д゚)ポカーン

608:デフォルトの名無しさん
04/08/25 15:54
すいません。わたしマイクロソフトの社員ですが実は602の言うとおりです・・・

609:デフォルトの名無しさん
04/08/25 17:23
プロパティウインドウでGUI入力できるプロパティはどのように作成したらよいのでしょう?
たとえばBackColorのプロパティ等のような
プロパティ値の▼押下でプロパティ設定用の画面から入力できるようなものを作成したいのですが・・・

610:デフォルトの名無しさん
04/08/25 17:50
VB.NETでCORBAって使えますか?

611:デフォルトの名無しさん
04/08/25 17:50
とりあえず練習用にVisualBasic.netを買ってみたんですが、DB400に接続しようとしてODBC接続
接続しようとすると、このバージョンのVSでは無理だよヴォケ!ってウィザードの最中にいわれてしま
います。

普通のVisualStudio.netなら大丈夫なのでしょうか?それとも、エンタープライズ版を買わないとダメな
のでしょうか?



612:デフォルトの名無しさん
04/08/25 18:05
>>608
そこらにDoeventsを入れないといけないプログラム記述は
マイクロソフトで推奨されてるのですか?

613:デフォルトの名無しさん
04/08/25 18:10
.NETの実行速度を上げるために
1行のステートメントが終ったらすぐに次の行のステートメントを実行する仕様になってます。
そのためたとえループでなくてもマルチタスクさせたい場合(たとえネットするぐらいでも)は制御のあそび(すきま)を作ってほしいです。
Doeventsを使ってないプログラムのマルチスレッドは余計負荷になります。
公では言ってませんが感のいい方は気づいていたみたいです。

614:デフォルトの名無しさん
04/08/25 18:19
>>612
 このスレで書かれてる Doevents 推奨はほぼデタラメですが、
RPC や Out of Process COM オブジェクトの呼び出し (一部のSHホゲホゲ系 API も含む) などで
内部的に「隠れたウィンドウ」が生成されるようなスレッドは、非UIスレッドだからといって長時間ブロック
して処理を行うと DDE ブロードキャストを阻害し、シェル( Explorer) の動作を重くします。

615:デフォルトの名無しさん
04/08/25 18:21
推奨とは言いたいが言えない企業の悩み

616:デフォルトの名無しさん
04/08/25 18:23
>>614
追加。例えば Win32 の Sleep API の注意
URLリンク(www.microsoft.com)
なんかは、.Net でスレッドを作成する場合にも同じく適用されます。
(.Net の場合には AppDomain 間をまたがるメソッドの呼び出しでも隠しウィンドウが生成されると思います)

617:デフォルトの名無しさん
04/08/25 18:29
実行速度が早いとみせかけるためにはしょうがないのだよ

618:デフォルトの名無しさん
04/08/25 20:34
誰か611に答えてやれよワラ

619:デフォルトの名無しさん
04/08/25 21:36
だってわかんないんだもん

620:591
04/08/26 00:26
どうも、>>591です。
今日は同僚の目を盗んでVSのヘルプやらWeb上の文書をあさってみましたが、結局DoEvents()関連についてはうやむやのまま
せっかく.NETに移行したことだし(2ヶ月前までExcelのVBAマクロしか書いたことなかった)
スレッドとやらを使ってみようかとトライしてみました。

で、試行錯誤した末、以下のような感じのコードになりました。

Imports System
Imports System.Threading

Public Class Form1
      
      ・・・

Private Sub DoLoopThread()
'元Button1のクリックイベントにあった処理から、Application.DoEvents()を取っ払ったもの
End Sub

Private MyThread As New Thread(AddressOf DoLoopThread)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MyThread.start()
End Sub

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
MyThread.Abort()
End Sub

End Class

これで何とか”ループ処理中に「X」をクリックするとエラーが出る”問題は回避できるようになりました。

621:591
04/08/26 00:38
しかし、>>620のコードでもまた新たな問題が発生してしまいました。
一度ループの処理が終わった後、再度Button1をクリックすると

"スレッドが実行中か、または終了しています。再起動できません。"

とエラーが出てしまいます。
このツールでは、Button1で始まる処理を、何回でも呼べるようにしたかったのでいろいろいじくって
結局、Button1のクリックイベントの中身を以下のように書き換えて、何とか目論見どおりの
動作をさせることができるようになりました。

Select Case MyThread.ThreadState
Case ThreadState.Unstarted
MyThread.Start()
Case ThreadState.Running
MsgBox("処理実行中です。やり直す時は一度終了してください")
Case ThreadState.Stopped
MyThread.Abort()
Dim t As New Thread(AddressOf DoLoopThread)
MyThread = t
MyThread.Start()
End Select

これにて一件落着!と行きたい所ですが、どうもこのコードは直感的に美しくないような気がします。
一般的にスレッドの再利用(に近い機能)を実現するときのリーズナブルな方法とはどんなものなんでしょうか?

622:デフォルトの名無しさん
04/08/26 00:55
ボクにはネタにしかみえません。


623:デフォルトの名無しさん
04/08/26 00:58
タイマーで10ms

624:デフォルトの名無しさん
04/08/26 01:52
厨な質問で申し訳ないが、VB6のProjectをVB.netで読み込んで、
加筆修正してVB6のデータとして保存できるんでしょうか?

要はVB.netでVB6形式の保存ができるのかどうなのかを知りたいのです。

625:デフォルトの名無しさん
04/08/26 01:55
どうあがいてもむり。

626:デフォルトの名無しさん
04/08/26 09:55
>>624
ばっっっかじゃねーの

627:デフォルトの名無しさん
04/08/26 10:08
申しわけありませんが、質問させてください。

VB.NETで、配列を使わずに最終レコードから逆読みしていくにはどのようにすればいいのでしょうか。

1~100までのデータがあり、100、99、98…とグリッドに表示したいのです。



628:デフォルトの名無しさん
04/08/26 10:40
うるせーバカ

629:デフォルトの名無しさん
04/08/26 11:28
>>628
クズハ、ハヤクシネヨ
ソノホウガヨノタメ

630:デフォルトの名無しさん
04/08/26 11:39
フォームのデザイン時にロジックからコントロールを生成するようなことは可能でしょうか?
実効時、動的コントロール生成のやりかたはわかるのですが

AccessフォームのTextBoxのようにフォームデザイナにTextBoxを配置した時点で連動するCaption(Label)コントロールも同時に生成し
以降、デザイナ上でレイアウト操作を連動させる・・・
といったようなことをやりたいのですが
デザイン時にParentのInitializeComponent()へコントロール追記できるようなクラスやメソッドがあるのでしょうか?
ざっとググってみても関連する情報が見当たらないもので・・・

631:デフォルトの名無しさん
04/08/26 12:02
うるせーバカ

632:デフォルトの名無しさん
04/08/26 13:24
.NETになってからは変数名にいちいち
i.NETとかmyString.NETとか書かなければならなくなってめんどうになったから
VB6.0に戻ろうかな

633:デフォルトの名無しさん
04/08/26 13:29
>>628>>631
クズハ、ハヤクシネヨ
ソノホウガヨノタメ
ダイタイ、オマエガイテモダレモカンシャシナイ



634:デフォルトの名無しさん
04/08/26 13:53
>>632
うちの.netは付けなくても動くよ

635:デフォルトの名無しさん
04/08/26 14:04
>>634
社内(or参加プロジェクト内)での命名規約の話だろ。

>>632
VB6もリリースが終わったから、否応無しにVB.netを使わなきゃならん。。

636:デフォルトの名無しさん
04/08/26 14:09
>>635
難儀な会社だな・・・
うちじゃコンパイラがエラー出す

637:デフォルトの名無しさん
04/08/26 14:17
>>629>>633
テメーコソヤクタタズダローガ
クズハ、ハヤクシネヨ
ソノホウガヨッポドヨノタメw

638:デフォルトの名無しさん
04/08/26 14:40
>>637
ノロイヲカケタヨ
エキノホームカラテンラクシシナイヨウニナ
ケケケケ...

639:デフォルトの名無しさん
04/08/26 14:52
>>638
アイニクデンシャニハノラネエンダワ
ゴクロウサマ
プププ...

640:デフォルトの名無しさん
04/08/26 15:25
>>611
安いやつ買ったね? ウィザードを使わずコードで書けばOKだよ

>>627
そのデータはどこに格納してあるの?

>>630
DTE からオブジェクトをとって、ごにょごにょやるしかないんじゃないかな。
つまり、コントロールの機能としては無理かと。


641:627
04/08/26 16:12
640様

返答いただきありがとうございます。

SQLサーバ7.0内のRDBとなります。接続はODBC接続しています。



642:デフォルトの名無しさん
04/08/26 16:50
>>641
データセットに入れてあるのなら、ループで逆に読めば OK。

レコードセットに入れてあるのなら、MoveLast して、MovePrevious しながら
とっていけば OK。

643:627
04/08/26 17:38
642様

ありがとうございます。

早速、試してみたいと思います。

本当に感謝致します。

644:デフォルトの名無しさん
04/08/26 19:01
掲示板を自動巡回するソフトを作りたいのですが、
どういった知識が必要なのでしょうか。
いくつかの掲示板を自動巡回できるようにし、
また各掲示板用の書き込みを巡回前に用意しておけば
巡回中に、自動で投稿されるようにしたいです。

掲示板によっては投稿に必要な手順が異なったりするのも
ソフトの方で登録できるようにしたいです。

どなたか、よきアドバイス・実現方法等ご教授下さらないでしょうか。


645:デフォルトの名無しさん
04/08/26 19:08
>>644
まずは、IEコンポーネントとかを使わずにブラウザを作るところからスタートだな。
TCP/IPとHTTPとHTMLぐらい。

646:デフォルトの名無しさん
04/08/26 21:00
コントロールA(アンカー左)とコントロールB(アンカー右)を配置した後、
フォームをリサイズしたら、BがAの下に潜り込んでしまいました。逆に
AがBの下に潜り込むようにしたいんですが、どうすればいいんでしょうか。
各コントロールの重なり方を指定するやり方を教えてください!m(_ _)m


647:デフォルトの名無しさん
04/08/26 21:14
>>646
まずはデザインモードでコントロールを右クリック。
話はそれから。
というか、普通それで解決法がわかると思う。

648:デフォルトの名無しさん
04/08/26 22:32
>>644
ついこないだそんなもん作ったなぁ・・・お前は俺か?(ぉ
URLリンク(www.gotdotnet.com)
ここのダウンローダーあたりを見ればwebから取得する方法は分かるだろ。
これで巡回はいいとして・・・

あとはその掲示板への投稿方法を見なければならないからなぁ
HTMLフォームの知識も必要になるだろう。
(簡単なHTTPの知識もあったほうがいいと思われ。RFCでも見るんだ)

巡回先が2chじゃないだろうな?一応
URLリンク(www.monazilla.org)

自動投稿スクリプトでAA連投プログラムとか作っちゃダメだぞ

649:デフォルトの名無しさん
04/08/27 09:43
Windows Script HostのMapNetworkDrive メソッド、RemoveNetworkDrive メソッド
と同じような事をwsh使用せずにVB.NETだけでしたいのですが
System.IO,System.netクラスにはなさそうだったのですができないのかな?
ネットワークドライブの割り当てせずにUNC形式でパスかかってるファイル、フォルダに
アクセスできればいいのですがどなたかご存知ないでしょうか?


650:デフォルトの名無しさん
04/08/27 10:40
プログラムを常駐させといて、ユーザーのクリックに反応してある関数を動かす
そんなプログラムを作りたいのですが、.NET Frameworkで実現できますか?

651:646
04/08/27 19:09
>>647
レス遅れてしまってすいません! ありがとうございました!
とても簡単に解決できたんですね・・・申し訳ないです。助かりました。
多謝です m(_ _)m

652:デフォルトの名無しさん
04/08/27 22:25
SQLからNullを含んだ列をDataSetに読み込んできたんですが、その列が
Nullであるかどうかを判別するのってどのようにすればいいんでしょうか?
SqlDataAdapter1.Fill(DataSet11.TestTable)
For Each dr As DataSet1.TestTableRow In DataSet11.TestTable
If Not dr.X Is Nothing Then
....
Else If
Next

という感じで書いてみたんですがだめでした
XMLスキーマエディタでNullValueを設定しようとしたら
このコンテキストでは無効です
というエラーが出てしまい、保存できません
どなたがご教授お願いします


653:デフォルトの名無しさん
04/08/27 23:43
>>652
IsDBNull関数でできると思うけど?


654:デフォルトの名無しさん
04/08/28 09:52
>>653
出来ません。

655:デフォルトの名無しさん
04/08/28 10:09
自作プロパティ、メソッドに説明文をつけたいのですが方法がわかりません。
プロパティウインドウの下の部分や、入力候補に表示させるにはどうしたらいいのでしょうか?

656:652
04/08/28 12:28
>>653 >654の言うとおりで出来ませんでした。
datasetの項目はpropertyみたいなのでgetメソッドの中で
例外が発生しているみたいです。


657:デフォルトの名無しさん
04/08/28 12:40
ちょっと質問です。

VB6.0では、スクリプトコントロール
(URLリンク(www.microsoft.com))
があって、VBアプリからVBスクリプトを簡単に利用できましたが
VB.NETで同じようなことはできるでしょうか?



658:デフォルトの名無しさん
04/08/28 13:22
DataSet11ってオリジナルのクラス?

659:652
04/08/28 13:36
>>658
そうです。データアダプタでデータセットの生成をやったときに
新しいデータセットを作るときのデフォルトの名前がDataSet1
で、それをフォームに追加したときに出来るのがDataSet11です。


660:デフォルトの名無しさん
04/08/28 14:10
その方法でDataSetを使ったことがないんだけど

XMLスキーマ経由で返されるNULLってゼロストリング""じゃなかったっけ?
CrystalReportsのXMLデータセットで使ったときはNULL=""で対処してた



661:652
04/08/28 15:16
>>660
XMLスキーマエディタでNullValueをemptyに設定するとゼロストリング""
になるらしいんですけど、その設定が出来ませんでした。(保存するとき
にエラー「このコンテキストでは無効です」が出る)
>NULL=""で対処してた
それで対処できるのはわかるんですけど、たとえばSQLdatareaderとかを
使う場合とかならISDBNUllとかで対処できるからdatasetでもできるんじゃ
ないかと思ったんです

662:デフォルトの名無しさん
04/08/28 15:54
試しに
ID Int
STR CHAR
DT DATETIME
っていうSQL結果(テーブル)からDataSet1.xsd
作ってみたんだけど

STRのNullValueプロパティを(Empty)にしたら問題なくコンパイルが通った

DT(DateTime)のNullValueプロパティを(Empty)にしたら
「カスタム ツール エラー : コードを生成できませんでした。システム エラーです。」
と言うのが発生したけど、これはまた別物かな

一度XMLスキーマに通してるみたいだけど
直接Data.DataSetにFillすることは出来ないのかね?
Data.DataTable内のDataColumnならNull値(Nothing)が取れるんだけど

何かあんまり力になれそうにないです
スマソ


663:デフォルトの名無しさん
04/08/28 16:09
datasetじゃなくてdatatableじゃダメなん?


664:652
04/08/28 16:19

>STRのNullValueプロパティを(Empty)にしたら問題なくコンパイルが通った
>DT(DateTime)のNullValueプロパティを(Empty)にしたら
>「カスタム ツール エラー : コードを生成できませんでした。システム エラーです。」
>と言うのが発生したけど、これはまた別物かな
同じエラーです。こっちではそれでコンパイルが通らなくなっちゃうんですよね。
何がちがうんですかね?

>一度XMLスキーマに通してるみたいだけど
>直接Data.DataSetにFillすることは出来ないのかね?
えーっと私の理解ではdatasetを生成すると自動でXMLスキーマが生成されて
さらに編集したい場合にはエディタを使うってことだと思ってたんですが
違いますか?

>Data.DataTable内のDataColumnならNull値(Nothing)が取れるんだけど
DataTableは使ったことがないんで試してみます。

>何かあんまり力になれそうにないです
>スマソ
いえいえありがとうございました。参考になりました。

>>663
とりあえずやってみます


665:デフォルトの名無しさん
04/08/28 16:35
>>664
XMLのDataSetとSystem.Data.DataSetは名前は同じなんですけど中身が別物です

Dim dt As New Data.DataTable '新しいDataTable作成
SqlDataAdapter1.Fill(dt)      'でDataTable内にデータを取得できるので

For Each dr As Data.DataRow In dt.Rows

dr.Item(カラム名か番号) '<-これでレコードごとのカラムにアクセスできます

Next

な感じでデータを取得できます

666:652
04/08/28 18:08
>>665
>dr.Item(カラム名か番号) '<-これでレコードごとのカラムにアクセスできます
ここでItem(カラム名か番号)がNULLだと例外が出てしまうんです。
If dr.Item(カラム名か番号) Is Nothing then ...
If ISDBNull(dr.Item(カラム名か番号)) then ...
などとやってもうまくいかないんですよ(TT)



667:デフォルトの名無しさん
04/08/28 20:26
If IsDBNull(dr.Item(カラム名か番号)) then てやらんと。
DataRowに入ってるSystem.DBNull.Value とNothingは別物だぞ

668:667
04/08/28 20:32
If dr.Item(カラム名か番号) Is DBNull.Value then ... でもok


669:665
04/08/28 20:57
失礼
NothingじゃなくてDBNullでした

670:デフォルトの名無しさん
04/08/28 21:58
dr.Item(カラム名か番号) で例外が出るんだったらそれでは無理と思うが…


671:デフォルトの名無しさん
04/08/28 22:00
って勘違いしてたかな?スマン

672:デフォルトの名無しさん
04/08/28 23:26
ON_WM_KEYUP( )メッセージハンドラで他のアプリのキーUPメッセージって拾えますか?


673:デフォルトの名無しさん
04/08/29 05:29
SqlDataAdapter1.Fill(DataSet1,"DataTable")で作成したDataTableの中身を
Excelファイル(.xls)に吐き出して、Excel起動→WorkSheet表示→印刷
→Excel終了をVBのプログラムから実行したいのですが方法が分かりません。
どなたかご教示頂きたく宜しくお願いいたします。
ちなみに、VBは2003、Excelは2002、DBはMSDE-RelAです。

674:デフォルトの名無しさん
04/08/29 08:17
>>673
URLリンク(www.atmarkit.co.jp)
ヒントが見つかるんでないかな

675:523
04/08/29 12:35
>>655
入力候補ってのはどんな奴を指してるかイマイチ解りませんが、
Modifiersプロパティみたいな奴だったら
Public Enum testEnum
t0 = 0
t1
End Enum
<System.ComponentModel.Description("説明です")> _
Public Property test() As testEnum
で、OKと思われる

追伸
誰か、523の回答もお願いします

676:デフォルトの名無しさん
04/08/29 20:09
>>675
>>523のやつまだやってたのかよ。

ってか>>518で書いてるようにプロパティをReadOnlyにしたらいけたぞ?
ReadOnlyじゃないと、DesignerSerializationVisibility.Contentの指定が生きてない感じ。
というより、コントロールのオブジェクト自体入れ替えられるんだから指定が意味なしってことかな・


677:523
04/08/29 21:20
>>676
すみません。完全に見落としてました・・・_| ̄|○
ReadOnlyにしたら出来ました。

678:デフォルトの名無しさん
04/08/30 09:15
VisualStudio.NET2003と.NET Framework1.1の組み合わせで
使用しています。

TreeviewやListviewを使った標準的な3ペインのアプリケーションを
作っているんですが、起動時に、Treeviewに水平スクロールバーが
表示されます。必要もないのに、です(つまりノードはすべて表示し
切れています)。Treeviewの大きさを変えたりすると、消えてしまいます。
これはバグでしょうか? scrollableプロパティをfalseにすれば表示され
ないんですが、これだと、ノードが表示しきれなくなったときにバーが
出なくなってしまいます。この水平スクロールバーの表示をなくすには
どうしたらよいでしょうか。よろしくお願いします。

679:655
04/08/30 09:36
>>675
レス感謝です。
プロパティは確かに実現できました。

>入力候補ってのはどんな奴を指してるかイマイチ解りませんが、
ソースを入力している時にピリオドを打つと出てくる奴のことです。
たとえばShowメソッドだと、
Me.
と打った時に入力候補が出て、Showの説明には、
コントロールをユーザーに対して表示します。
と表示されます。この説明を設定したんです。

680:デフォルトの名無しさん
04/08/30 10:10
>>679
XML ドキュメント

681:デフォルトの名無しさん
04/08/31 02:28
>>680
もっとわかりやすく伝わるように努力してくれませんか?

682:デフォルトの名無しさん
04/08/31 02:46
681 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/31 02:28
>>680
もっとわかりやすく伝わるように努力してくれませんか?


他人に努力を求めるってのもすごいな

683:デフォルトの名無しさん
04/08/31 03:47
>>681
ぎゃはははは、じゃとっととあきらめろ。
やならドキュメントコメントについて調べろ。

684:デフォルトの名無しさん
04/08/31 09:56
ここは中途半端な知識の香具師が、エラを張るイソターネッツでつね。

685:デフォルトの名無しさん
04/08/31 12:41
インターネッツ?
2ちゃんねるだよ ボケ!

686:デフォルトの名無しさん
04/08/31 18:08
>>683
そんな一言じゃアドバイスになりません。
煽るつもりならレスしないでください。

687:デフォルトの名無しさん
04/08/31 18:54
夏の終わりに変なのが出てきたな・・・
課題が終わらない大学生か?




688:デフォルトの名無しさん
04/08/31 19:15
idCode1で絞込みをして、外装コンボボックスに値を出力、次にidCode1とidCode2で
絞込みをして内装コンボボックスに値を出力しようと思っています。

下のように書いて、外装コンボボックスに"excol_name"値は出力できました。次に
この"excol_data"テーブルに存在している"excol_id"の値を"idCode2"に代入したい
のですが、コンボボックスの"excol_name"をフォームから選んだ時に、その行にある
"excol_id"を"idCode2"として得る方法を教えてください。

Private Sub frmMakedata_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim cmd As SqlClient.SqlCommand = SqlConnection1.CreateCommand()
Dim dr As SqlClient.SqlDataReader
Dim idExcol1 As Integer
cmd.Connection = SqlConnection1
SqlConnection1.Open()

'外装コンボボックスの設定

cmd.CommandText = "SELECT * FROM excol_data WHERE car_id =" & idCode1 & ""
dr = cmd.ExecuteReader()
Do While dr.Read = True
cmbExcol.Items.Add(dr("excol_name"))
Loop
dr.Close()

End Sub

689:デフォルトの名無しさん
04/08/31 23:24
外装とか内装って何よ

好意的に解釈すると
ComboBoxが2個ある
一方に値を設定すると、他方にそれに該当する候補値を入れたいって事か

だったらSelectedIndexChangedかSelectedValueChangedでその変化をひらって
みるとか

できたらもう少し状況がわかるように書いてくれよ
つうか人間にうまく伝えられなかったら、コンピュータにもうまく伝えられないんじゃねぇ

690:688
04/09/01 00:56
えーとですね、車の見積を作ってるんです。

んで、外装の色のコンボボックスは、車種でもって、ふるいに掛けられて
内装の色のコンボボックスは、車種と外装の色でもって、ふるいに掛けた
いんです。

で、外装の色コンボボックスは、excol_dataのテーブルに含まれてる車種
のidであるcar_idでふるいに掛けることに成功したんですが、内装の色の
コンボボックスの値を決めようとすると、車種をあらわすidCode1=car_idと、
外装の色を表す、idCode2=excol_idが必要になるんです。

で、外装の色のコンボボックスで、色を選択したときに、このテーブルに含
まれているexcol_idを取得したい・・・というわけなんです。

判りにくくてすいません。

691:デフォルトの名無しさん
04/09/01 01:46
車のデータベースか・・・
以前どこかで見かけたような・・・
いや、デジャヴだろうな・・・

692:デフォルトの名無しさん
04/09/01 05:32
>>691
意味ないレスしてんじゃねーよ
おまえはチラシの裏にでもレスしてろ

693:デフォルトの名無しさん
04/09/01 07:53
オマエモナー

694:デフォルトの名無しさん
04/09/01 07:54
ここは、役に立たないイソターネッツですね。

695:689
04/09/01 11:02
>>688 >>690
Accessとかでやった方がすこぶる簡単だと思われ


696:デフォルトの名無しさん
04/09/01 20:53
ACCESS以下だと言う事が露呈しました。

697:デフォルトの名無しさん
04/09/02 01:32
Accessって何?

698:デフォルトの名無しさん
04/09/02 02:40
TreeViewコントロールのツリー構造をどこかに保存しておき、
アプリケーションを起動したときに、そのツリー構造を正確に
再現するようにしたいんですが、どうしたらいいのか見当つかず
困っています・・・。このツリー構造は、ユーザーがノードを
追加・削除できるもので、プログラマ側が、具体的にどのような
ツリー構造となるかは予想できません。TreeViewコントロールは
いろんなアプリに利用されていて、保存・再現はほとんど必須の
テクニックだと思うのですが・・・。どのように処理するとよいんで
しょうか。

699:デフォルトの名無しさん
04/09/02 10:34
>>698
検索しろ。過去ログ嫁。

700:デフォルトの名無しさん
04/09/02 17:40
Webサービスで
<WebMethod()> _
Public Function FX(ByVal X As Integer, ByVal Y As Integer, ByVal Z As Integer) As Integer
Z = X + Y
End Function
というサービスを起動し

クライアントアプリケーション(VB.NET)でZの値を取得しようとしたのですが
値が返ってきません

Webサービスでは引数に戻り地を渡すことは出来ないのでしょうか?

701:デフォルトの名無しさん
04/09/02 19:46
ByVal Z As Integer じゃなくて
ByRef Z As Integer じゃないのかな

702:デフォルトの名無しさん
04/09/02 21:46
>>697
Office製品の一部?

703:デフォルトの名無しさん
04/09/02 22:13
>>700
何がしたい

704:デフォルトの名無しさん
04/09/02 22:23
>>698
キーワード: シリアライズ

705:デフォルトの名無しさん
04/09/02 22:39
シリアライズする元ですら作れないと思われ。
っていうか、TreeViewの情報って何を保存しときたいの?
ツリーの構造と状態?名前?その他のデータ?
その情報は誰が(何が)操作、作成するわけ?

706:デフォルトの名無しさん
04/09/02 22:46
役に立たないから落とせよ、このスレ。
プ

707:デフォルトの名無しさん
04/09/02 22:48
(σ´∀`)σ)・ω・) >>706

708:デフォルトの名無しさん
04/09/02 23:38
みんな基本コントロールを継承して軽くカスタマイズして使ってるだろけど、
ネットで公開してるのは少ないな。
TreeViewの構造を読み書きできる継承クラスぐらい落ちてそうなもんなのに。

709:700
04/09/03 00:25
おそくなりました

>>701
ByRefにしてみてもダメでした

>>703
サーバ上のとあるユーティリティ(COMコンポーネントで実装)を実行して
検索結果を返すというサービスです
複数の結果を同時に返す必要があるので
引数で返す方法をとりたかったのですが

710:デフォルトの名無しさん
04/09/03 08:54
>700
Returnしなくていいのか?

711:デフォルトの名無しさん
04/09/03 08:56
>700
709読んでなかった、710は見逃してくれ。

構造体で返したらだめ?

712:デフォルトの名無しさん
04/09/03 11:18
めちゃめちゃ基本的な質問ですが。
ポップアップして処理状況を表示したりするときって、どういう処理してます?
MessageBoxと違って、自動で閉じたりしたい場合。

CreateObject("WScript.Shell").Popupだと秒数指定で閉じられるけど、
これだと外部からクローズできるのかな?
でもこんなので遅延バインディングするのもなんか嫌なかんじ。

わざわざ個別にフォーム作るのもめんどくさいんで、
Timeoutプロパティとか表示メッセージのプロパティとかを
くっつけたクラスをさくっと作ろうかと思ったけど、
普通みんなどうしてるんでしょう。


713:デフォルトの名無しさん
04/09/03 12:36
時間が来たら自律的に死ぬクラスがそんなに悩むようなこととも思えないが。。

714:デフォルトの名無しさん
04/09/03 14:05
作るのに悩んでるんじゃなくて、
定石を知りたいんじゃないのかな?
自律死はともかく、ポップアップ窓はなんか標準であってもよさそうだし。

715:デフォルトの名無しさん
04/09/03 14:34
(´-`).。oO( 自演Z

716:700
04/09/03 15:26
>>711
本来はクライアントアプリケーションで使うOCXを
Webサービスで使おうとしているので

    r = FX.HOGE(X,Y,Z) <= Zに計算結果、rは成功か失敗か

このようなOCXの場合

    r = FXweb.HOGE(X,Y,Z) <=Web経由で同じ作業をさせたい

のように FXオブジェクト をWeb参照にするだけで、現状のソースを書き換えたかったのです
もともと「IIS(ASP)でも使えます」というOCXだったので
上記のような使い方が出来るものかと思いまして・・・

ただWebサービスの内部はXMLのPOSTのようなので、引数はInputのみなのかもしれません
別の方法が無いか試して見ます



717:デフォルトの名無しさん
04/09/03 17:04
vb.netで「ペイント」のようなソフトを作りたいんですけど、
良いサンプルありませんか?

718:デフォルトの名無しさん
04/09/03 18:46
無い

719:デフォルトの名無しさん
04/09/03 19:08
Dim X As string = (SqlDataAdapter1.SelectCommand.CommandText
= "SELECT name FROM member WHERE member_id = 25")

ってやったら、Xにid25番の人のnameじゃなくて、TrueかFalseが帰ってきちゃうんで
すが、nameを返すにはどうしたらよいでしょうか?

720:デフォルトの名無しさん
04/09/03 19:49
>>719
Dataset の使い方を一から勉強しなおす。

721:デフォルトの名無しさん
04/09/03 20:02
DBやったこと無いけど>>719は絶対に真偽値を返す事だけはわかる。

722:まんこ ◆yCMANKO3dM
04/09/03 20:11
質問内容からして素人なんだから、だれか説明してやれよwwww。

723:デフォルトの名無しさん
04/09/03 21:01
ばか、ここは生まれながらにして、VBが使える神の集うスレナンダよ!

だから、どんな質問でも完璧に答えられる。

自分で調べろ!

な?完璧だろ?

724:デフォルトの名無しさん
04/09/03 22:37
タスクトレイに表示したアイコンから
URLリンク(www.geocities.jp)
みたいにメッセージを表示したいのですが
どう殺ったらよいのでしょうか?

725:デフォルトの名無しさん
04/09/04 00:24
>>713
簡単なようだが、まともに動作する、かつ問題のない
こういうクラスを作るのは、それ程簡単でもないぞ。


726:デフォルトの名無しさん
04/09/04 00:54
>>724
VBの神が答えてやろう。

自分で調べろ。

727:デフォルトの名無しさん
04/09/04 01:11
>>724
一番簡単なのは新しいハードウエアを抜き差しすることだな

728:デフォルトの名無しさん
04/09/04 01:12
Objectのキャストについてどなたかご存じでしたら教えてください。

・フォームに複数のコントロールがある
・各コントロールのTagプロパティに、文字列
 またはオブジェクトがセットされている

この状態で、フォーム内の全コントロールを参照して
Tagプロパティに文字列"hogehoge"がセットされているもの
だけに処理を施したいと思い、Tagプロパティをcstrでキャストして
"hogehoge"と比較したいのですが
オブジェクトが入っている場合、エラーになってしまいます。

こういう場合、cstrでキャストできるかどうかの判断をする方法
というのはあるのでしょうか?
それとも、TryCatchで例外を拾うしかないのでしょうか?


729:デフォルトの名無しさん
04/09/04 01:19
If TypeOf hoge.Tag Is String AndAlso CStr(hoge.Tag) = "hogehoge" Then
 ほにゃらら

730:デフォルトの名無しさん
04/09/04 08:01
↑ちがうだろ。

正解は、自分で調べろ。だろw

731:デフォルトの名無しさん
04/09/04 08:36
なにこの良スレ

732:デフォルトの名無しさん
04/09/04 09:03
初心者に”自分で調べろ”と言って、日ごろの憂さを晴らすデジタル・ドカタ
のスッドレはココですか?

733:デフォルトの名無しさん
04/09/04 10:14
初心者じゃなくて、何か(例えば「初心者」)を口実っていうか免罪符にして
他人を利用しようとするズウズウしい横着者を叩いて日ごろのウサを晴らす
デジドカのスレがここですが文句ありますか。

ついでに自分のあつかましさを批判されると逆切れする>>732みたいな
あつかましい奴ももれなく叩いておりますが。

734:デフォルトの名無しさん
04/09/04 10:20
↑デジタルドカタキター。

735:デフォルトの名無しさん
04/09/04 10:33
休日の朝から、カルシウム不足の>>733が湧いたな、牛乳でも飲んでろ。

>>719もまいは、明日から俺のメイドさんになること。もしくは口からクソを垂れる前と後
にSirをつけること。あと、入門書に乗ってないことでも、冷静に色々やってみろ。


'変数の定義
Dim X As String
'SqlConnection1を使って、データコマンド作成
Dim cmd As SqlClient.SqlCommand = SqlConnection1.CreateCommand
'データーリーダーの設定
Dim dr As SqlClient.SqlDataReader
'コマンドのコネクション設定
cmd.Connection = SqlConnection1
'検索条件の設定(A)
cmd.CommandText = "SELECT name FROM member WHERE incol_id = 25 "
'コネクションを開く()
SqlConnection1.Open()
'データリーダーから、データーを読み出す
dr = cmd.ExecuteReader()
'読めたら、Xに代入・・・(A)のSQLでnameのところを*にしてXをYだのZだのに変えて、
'好きなだけ変数を引っ張れw
Do While dr.Read = True
X = dr("name")
Loop
'データリーダーを閉じる()
dr.Close()
'コネクションを閉じる()
SqlConnection1.Close()

デジタルドカタは、人に者を教えるときはそいつのレベルまで下がって教えてやれよw。
お前らだって誰かに習っただろうにwww。

736:デフォルトの名無しさん
04/09/04 11:00
>>724
これは漏れも知りたい

>>727
ワロタ

737:デフォルトの名無しさん
04/09/04 13:05
>>724
Baloon Tooltip を使え。

738:デフォルトの名無しさん
04/09/04 16:07
DateTimePickerコントロールをデータセットに連結してます。
ユーザー操作無しにコントロールのValue値をデータセットに反映させるには
どうすればいいのでしょうか?
例えば、新規レコード追加Formでコントロールに年月日が表示されますが、
その日付でいいやと言うことでコントロールを操作しないと、新規レコードの
日付はNullになってしまいます。
これを何とかしたいです。言葉足らずがあったらすみませんm(_ _)m

739:デフォルトの名無しさん
04/09/04 17:43
変更がない時は、Nowを突っ込む。

Null入れてんじゃねえよ!と言うエラー捕まえて、Nowを突っ込む。

てのは?

740:デフォルトの名無しさん
04/09/04 17:56
意味がわかりません

741:738
04/09/04 18:07
>>739
レスありがとうです。
現状は、
Dim dvHogeHoge As DataView
Dim cm As CurrencyManager
DateTimePickre.DataBindings.Add("Text",dvHogeHoge,"HIDUKE")
みたいな感じになってるので、
If DateTimePickre.Text = "" Then
dvHogeHoge(cm.Position)("HIDUKE") = Now()
End If
ってな感じで試してみようと思います。

742:デフォルトの名無しさん
04/09/04 18:09
だから、直接連結させずに、一端変数に入れて、変数に入れた内容をupdateするときに
その変数をDBに突っ込めば?んで、変数の初期値をnowにでもしとけば、底がNullに
なるって事はないでそ?

743:デフォルトの名無しさん
04/09/04 18:10
って、>>740>>741とは違う人だったかw。

744:デフォルトの名無しさん
04/09/04 20:04
自フォームのListViewから(エクスプローラのように)他のアプリ
ケーションに対し、Drag&Dropでファイル名を与えたいのですが、
方法がよくわかりません。

Private Sub ListView1_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles ListView1.ItemDrag
Dim filename as String
filename = (略)
ListView1.DoDragDrop(filename, DragDropEffects.All)
End Sub

としてみたのですが、Dragしてもマウスカーソルは(/)のままで、
エクスプローラからのDrag&Dropなら受け取ってくれるアプリも
Dropに無反応です。

例外としてMS Wordは文字列(filename)を受け取ってくれました。

何かやるべきことが抜け落ちているのでしょうか、教えてください。

745:デフォルトの名無しさん
04/09/04 21:06
たしかオライリーだっけ?それ使えばいいのかな

746:デフォルトの名無しさん
04/09/05 07:14
質問させてもらいます。

Textbox1~3にA,B,Cと入力した文字を、WriteLine関数
を使って、テキストファイルの1行目に
"A","B","C"
というような内容で保存したのですが。

ListViewに見出し行を3つ設定したもの
(例えば 番号,氏名,フリガナ )
を、それぞれ見出し行別に、保存したファイルの内容を
表示するように読み込むにはどうしたらいいでしょうか。

747:デフォルトの名無しさん
04/09/05 10:11
少しは考えろ

748:デフォルトの名無しさん
04/09/05 11:39
オマイもその生産性のない行為と人生について考えたらどうかね

749:デフォルトの名無しさん
04/09/05 12:02
クレタ人は嘘つきだとクレタ人はいった。

生産性のない行為と人生について考えろ、といった者は、
「生産性のない行為と人生について考えろ」という行為の生産性と
彼の人生にいおける意味について考えた...?

750:デフォルトの名無しさん
04/09/05 12:23
面白い!

751:デフォルトの名無しさん
04/09/05 14:32
>>749
考えたらこんな感じになった
ってかVBじゃなくなってしまった すまそ

public Menbs = new Menbs(748);

while(にちゃんねら.人類なんてどうしようもないんだよとオモタカウンタ < 1000000)
{
 foreach(2CHスレッド スレ in 2CH)
 {
  for(int i=1; i<1001;++i)
  {
   if(にちゃんねら.watch(スレ,i)==Menbs.ゴミクズ || にちゃんねら.watch(スレ,i)==Menbs.糞レス)
    ++ にちゃんねら.人類なんてどうしようもないんだよとオモタカウンタ;

   ++にちゃんねら.ストレス;
  }
 }
}
print("そうか、人類皆殺しにすればいいだよ\n");
Exit(人生);

752:デフォルトの名無しさん
04/09/05 18:28
ちゃんとVB.NETで書かんかい。

753:デフォルトの名無しさん
04/09/05 19:13
質問させてください。

タイマーの割り込みは1ms単位で設定できるようなのですが、実際に動かすと、10ms単位になっているようです。
1ms単位で割り込みをかけられないのでしょうか?


754:デフォルトの名無しさん
04/09/05 19:18
何のタイマーってかどういうタイマーってか、Timerは何使ってんだ?
ちなみにまじめに書くと多分やろうとしてることは無理だからあきらめろ。

755:デフォルトの名無しさん
04/09/05 20:34
>>753
知ってるけど教えてやらない

756:デフォルトの名無しさん
04/09/05 20:39
そんなこと言わないで教えてよ。

757:デフォルトの名無しさん
04/09/05 22:28
>>756
System.Timers.Timerは精度が高い

URLリンク(www.microsoft.com)
> イベントを時間どおりに発生させるという点で、Windows のタイマより正確です。

758:デフォルトの名無しさん
04/09/06 00:04
>>757

ありがとうございました。
明日、会社で試してみます。

759:デフォルトの名無しさん
04/09/06 00:08
正直結局同じような問題に引っかかると思うぞ…

760:デフォルトの名無しさん
04/09/06 00:21
Winのプロセスのタイムスライスってmsecのオーダーだったような気がするんだけど。。
OSのタイムスライスより短い間隔のイベントって無理じゃないだろうか?
少なくともマイコンのタイマ割り込みみたいに厳密にはいかないはず。

>>753って組み込み系の人か?
Winのプログラミングってのはハード(CPU)をプログラミングしてるんじゃなくて
ハード上に仮構された仮想機械をプログラミングしてるんだってことを忘れてないか?

761:なんかの壁
04/09/06 10:47
不思議な現象に悩んでいます。
DatagridのdataSourceにDatatableを設定して表示しています。
プログラムでDatatableをカラムから作成しています。
1回目の実行ではうまく表示されます。
2回目でDatatable作り直すとカラムだけ表示されて、データ部分が
表示されません。
1回目も2回目も動くプログラム部分は同じです。対象となるデータが異なるだけです。
(ちなみに、プログラムを再起動して先ほど2回目に行ったデータで実行してみると正しくデータも表示
されています)
なにか初期設定すべきことでもれていることがあるようですが、
いくら調べてもわかりません。




762:デフォルトの名無しさん
04/09/06 11:13
不思議ですね。

763:デフォルトの名無しさん
04/09/06 15:25
ソースを張れよ

764:なんかの壁
04/09/06 16:23
失礼いたしました。
ソースはかなり大きいので・・・。
問題箇所が判明しました。
datatableを作り直すとき、resetメソッドを使っていたのが問題だったようです。
テーブル自体は作り直せるのですが、何かの情報が失われるようです。

    (Public tbl as Datatable)
(Form_Loadで tbl = New DataTable("table1"))

元:
tbl.reset()

修正後:
tbl = Nothing
tbl = New DataTable("table1")

本当の理由がわからないのが弱点ですが。

765:デフォルトの名無しさん
04/09/06 16:36
┐(´ー`)┌

766:デフォルトの名無しさん
04/09/06 17:27
ちょっと急ぎなんで過去ログとか読んでなくてすみません。

textboxをラベルみたいに表示させたいんですが、
どうしたらよいでしょうか?

文字色は黒でフォーカスが行かないよう(クリックも不可)にしたいです。

767:デフォルトの名無しさん
04/09/06 17:36
>>766
知ってるが急いでるんで教えられない。

768:デフォルトの名無しさん
04/09/06 17:39
enable = false

769:デフォルトの名無しさん
04/09/06 17:43
enable = false でやると、
文字色が灰色になっちゃいますよね?
文字色黒のまま使いたいのですが・・・

770:デフォルトの名無しさん
04/09/06 18:08
readonly = true

771:デフォルトの名無しさん
04/09/06 18:11
readonly = true でやると
クリックした時にフォーカスが行きますよね?
文字色黒、クリック不可の状態を作りたいのですが、
どうしたらよいでしょうか?

772:デフォルトの名無しさん
04/09/06 18:13
すいません。
クリック不可ではなく、選択不可です。
文字色黒、中の文字を選択不可の状態を作りたいです。

773:デフォルトの名無しさん
04/09/06 18:34
上からラベルをかぶせる

774:デフォルトの名無しさん
04/09/06 18:37
やっぱラベルかぶせるしかありませんかね?
テキストボックスのみでどうにかできるのが、
理想なんですが。

775:デフォルトの名無しさん
04/09/06 18:38
つ~か、なんでラベルが使えないの?

776:デフォルトの名無しさん
04/09/06 18:38
ていうか、なんでラベルじゃだめなのか。

777:デフォルトの名無しさん
04/09/06 18:38
オホホかぶった。

778:デフォルトの名無しさん
04/09/06 18:42
パラメータによって、
そのフィールドが入力出来たり出来なかったりします。
で、入力不可の時はラベルみたいにして欲しいと言われてるんで。


779:デフォルトの名無しさん
04/09/06 18:49
Windows標準から外れたことをやろうとしてるわけだから
エレガントに解決しようとせず、実際にラベルを使うのが
ベストだと思う。
実行時にラベルを生成して、TextBoxと同じBoundsに
置いて、TextBoxを消せばいいんだろ。

780:デフォルトの名無しさん
04/09/06 19:04
わかりました。
そのやり方で上司と相談してみます。
回答ありがとうございました。

781:デフォルトの名無しさん
04/09/06 19:05
sage忘れた。すみません。

782:779
04/09/06 20:02
>>780
その要求の出所がお客じゃなくて上司だったら、
「そんな間抜けなUIじゃ笑われますよ」って言ってやるが。

783:デフォルトの名無しさん
04/09/06 20:29
注文が多いな

784:デフォルトの名無しさん
04/09/06 20:46
笑うのはプログラマの都合。見た目重視を求めるなら
十分有りうる想定。

笑われますよ、とか、出来ませんとかは只の言い訳だし。


785:デフォルトの名無しさん
04/09/06 21:19
いや、見た目重視ならむしろWinの標準のUIの方が統一感があり直観的だと思うが。。
それ以上に必要以上に見た目が変化するUIなんてダサイしイライラするだろう。

まあ、マーキーで文字が流れまくりのウェブサイトをかっこいいと思う人も
いるわけだから蓼食う虫も好き好きといえばそれまでだけど。

786:デフォルトの名無しさん
04/09/06 21:31
Textboxを継承してLabelを内在するコントロールクラス作っとけ。
で、プロパティで表示を切り替え。

787:779
04/09/06 21:39
>>784
「すいません、できません」は言い訳っていわないと思うが。

「なんでそんなバカな仕様で受けてきたんだ」はよく使う言い訳。
というか遠吠え。

788:デフォルトの名無しさん
04/09/07 00:12
>>784
言われたこと全部やろうとするのかお前は。


789:デフォルトの名無しさん
04/09/07 09:28
メール送信のプログラムを作成していたのですが、CDO.messageにアクセスできません。
という例外がでて送信することができません。
調べたところ私の使ってるメールサーバのSMTPがPOP before SMTPになっていたので
1~4行目を追加したところ、自分から自分には送信できたのですが
他のメールアドレスに送信すると同じ例外が帰ってきました。
本についてるメール送受信のサンプルソースなども試したのですが
わたしのメールサーバの設定では、例外こそ出ないものの他のメアドに送信すると
何故かメールが消えてしまい、相手にも届かなければこちらに送信エラーで
帰ってもきませんでした。
どなたか良い解決方法はないでしょうか?

1 Dim tcp As New System.Net.Sockets.TcpClient()
2 tcp.Connect("pop.hogenet.ne.jp", 110)
3 Dim sw As New StreamWriter(tcp.GetStream())
4 sw.Write("USER hoge" + vbCrLf + "PASS ******" + vbCrLf + "STAT" + vbCrLf + "QUIT" + vbCrLf)
5 Dim mm As New System.Web.Mail.MailMessage()
6 mm.From = "hoge@hogenet.ne.jp"
7 mm.To = "piyo@piyo.co.jp"
8 mm.Subject = "てすと"
9 mm.Body = "てすとです"
10 mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220)
11 System.Web.Mail.SmtpMail.SmtpServer = "smtp.hogenet.ne.jp"
12 System.Web.Mail.SmtpMail.Send(mm)


790:デフォルトの名無しさん
04/09/07 09:49
追記

なお、自分自身にメールを送信すると
必ず差出人のところ『のみ』が文字化けしてしまいます。
ただ、差出人を本当のメールアドレスの"hoge@hogenet.co.jp"から
"hage@hogenet.co.jp"や"hoge@hogehogenet.co.jp"
などと出鱈目なものにすると何故か文字化けせずに受信できました。

使用環境は
WindowsXP Professional Version2002 Service Pack 1
Microsoft Visual Basic .NET
Microsoft.NET Framework 1.0.

使用しているメールソフトはNetscap 7.1です

791:デフォルトの名無しさん
04/09/07 10:37
関係あるかわからんけど

mm.Headers("Content-Transfer-Encoding") = "7bit"

これしたらどうだろうか。これしないとQuoted-Printableになっちゃって
受け付けないor化ける相手がいたことならある。

792:デフォルトの名無しさん
04/09/07 10:56
>>789
プロバイダ経由しないで送信できないの?
たとえばIISからとか

793:デフォルトの名無しさん
04/09/07 11:20
>>791
ご指摘ありがとうございます。
mm.Headers("Content-Transfer-Encoding") = "7bit"
の一文だけでは文字化けは直らなかったのですが

以下のヘッダー情報を追加したところ、
mm.Headers("Content-Transfer-Encoding") = "7bit"
mm.Headers.Add("Reply-To", "hoge@hogenet.ne.jp")
mm.Headers.Add("sender", "piyo@piyo.co.jp")

差出人の文字化けは直りました。
何故か"sender"を抜くと文字化けしたままなのが
よくわかりませんけど・・・。

あと、エラーメッセージももう少し掘り下げてみました。
サーバーによって 1 つまたは複数の受信者アドレスが拒否されました。サーバーからの応答は次のとおりです。
550 5.7.1 <piyo@piyo.co.jp>... Relaying denied. Proper authentication required.

'CDO.Message' オブジェクトにアクセスできませんでした。
System.Web
at System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args)
at System.Web.Mail.CdoSysHelper.Send(MailMessage message)
at System.Web.Mail.SmtpMail.Send(MailMessage message)
at mail.Form1.sendMail() in C:\temp\mail\Form1.vb:line 98

>>792
IISやSMTPなどの設定もあまりよくわからないのですが
開発環境でIISを使用して作ったとして、Home Editionなどを使っている
他の端末でも実行できるのでしょうか?

794:デフォルトの名無しさん
04/09/07 12:05
>>793
IISさえ起動していればHomeでもいけると思う(試したことが無い
やり方はSmtpServerプロパティを設定しないだけ


795:デフォルトの名無しさん
04/09/07 13:02
>>794
説明の仕方がまずかったかもしれません。
Aという端末(HomeEdition)がある処理をしたら
その結果をB端末(HomeEdition)、C端末(HomeEdition)・・・
にメールの形で報告するというものなので
IISが起動しているサーバというものはないのです。
普通のメールソフトで送受信できているので
できればわざわざA端末にProを入れてIISを起動させる。
という事はしたくないのですが、IISを使わないと
簡単にメール送受信を実現させる事は難しいのでしょうか?


796:デフォルトの名無しさん
04/09/07 13:07
>>795
550 5.7.1 <piyo@piyo.co.jp>... Relaying denied. Proper authentication required.
リレー拒否されてますけど、
>6 mm.From = "hoge@hogenet.ne.jp"
これちゃんとそのサーバにアカウントのあるアドレスですか?

797:デフォルトの名無しさん
04/09/07 13:13
>>796
それはもちろんあります。
SMTP、POP、FROMのメールアドレスは
メーラーで使われているものをそのまま
コピペでもってきたものです。
TOの方のメールアドレスも当然実在するもので
メーラーで送る分には何の問題もなく使えるものです。

798:デフォルトの名無しさん
04/09/07 13:14
>>789
(OutlookExpress等で) 一旦POPで読んでから動かすとどうなりますか?
なんとなく POP before SMTP がうまく行っていないだけのような気もします。

あと System.Web.Mail.Message って ISO-2022-JP が使えない(ですよね)ので、
日本語は送らない方がいいと思いますよ。
受信するのも自分ならいいのかもしれませんが。


799:デフォルトの名無しさん
04/09/07 13:18
>>789
BASP21を検討汁

800:デフォルトの名無しさん
04/09/07 14:19
>>789
>(OutlookExpress等で) 一旦POPで読んでから動かす

というのは、メーラーを立ち上げる→プログラムを実行する。
ということでしょうか?
とりあえずそれを実行してもダメでした。
あと、POP before SMTP が上手くいっていないという事だったので
4行目のソースのUSERとPASSを出鱈目なものして自分自身に送ってみたところ
それでも普通に送れてしまいました。
なのでPOP before SMTPが上手くいってなくて同じドメインの
自分のメールアドレスにだけメールを送る事が出来ているのかもしれません。

それと、ISO-2022-JPに関しては参考にしたサンプルソースで
日本語を送れる版ということでISO-2022-JPの設定があったので
10行目のISO-2022-JPの指定は問題ないと思います。

>>799
どうしようもなければそういった方法も検討しないといけないのかもしれませんが
まだ時間があるので出来れば自力で実現できる方法を考えたいと思います。


801:デフォルトの名無しさん
04/09/07 14:44
>>800
例えば foo@bar.com に送るとして、nslookup -type=MX bar.com で得られる
mail exchanger を SmtpServer にセットして、直接先方へ送れば多くのケースで動くと思います。
nslookup は System.Diagnostics.Process.Startで起動して、標準出力を貰えばよいでしょう。

802:デフォルトの名無しさん
04/09/07 16:14
>>801
その方法であっさり送る事が出来ました。
POP before SMTP で自分の所属するSMTPから
他所のドメインに送信する方法でかなり悩んでいたのですが
こんな方法があるとは思いも尽きませんでした。
本当にありがとうございます!

アドバイスして下さった皆さんにもとても感謝しています。
おかげさまでメール送受信の仕組みも全然勉強不足なのを痛感できました。
今回は801さんの方法で送ることができましたが
他の実現方法もないか勉強がてらいろいろ試してみようと思います。

803:デフォルトの名無しさん
04/09/07 16:32
>>801
神認定

804:デフォルトの名無しさん
04/09/07 17:13
>>802
ウィルス/ワームの類でPCを乗っ取って spam をガンガン送る奴とかへの対策でLAN 内部から外部への
smtp での直接アクセスをはじくネットワーク管理者も多いと思いますので、その辺を考慮する必要がある
なら自分の側のサーバ経由での SMTP の方も使えるようにしたほうがよいでしょう。

そういったネットワークの内部からなら、内部の smtp サーバには認証無しで送れそうな気もするし。

805:デフォルトの名無しさん
04/09/07 21:59
このスレ、俺がいなければ良スレだな

806:デフォルトの名無しさん
04/09/07 23:08
>>805
俺がいなければ良スレだよ

807:デフォルトの名無しさん
04/09/08 12:50
ソリューション内に、AとBのプロジェクトがあります。
Aにフォームを継承したクラス1と、それを継承したクラス1'があります。

このクラス1と1'をBプロジェクトでも使用したいので、
リンクファイルとして追加しました。

ですが、実行しBプロジェクトでクラス1'をNewしようとすると、

指定されたカルチャ (またはニュートラル カルチャ) に必要なリソースがアセンブリに見つかりません。
"クラス1'.resources" が、アセンブリ "Bプロジェクト" に正しく埋め込まれているか、
またはリンクされているかを確認してください。

というエラーが発生してしまいます。

ビルドは通ります。
それぞれのプロジェクトをソリューションから切り離した場合もうまく動きました。
フォームを継承していない自作クラス2と2'は動作しています。

サブクラスはリンクファイルとして使用できないのでしょうか?

808:デフォルトの名無しさん
04/09/08 16:37
はい、その通りです。

809:デフォルトの名無しさん
04/09/09 02:59
なんでリンクファイルにしたいわけ?

810:デフォルトの名無しさん
04/09/09 03:04
現在、.Net Remotingの勉強をしようと
MSDNのサンプルを試してみています。
System.Runtime.Remoting.Channels.Tcp名前空間を
インポートするように書いてあるのですが、自分の環境では
名前空間が見つからないというエラーになってしまいます。
確かにSystem.Runtime.Remoting.Channelsの
メンバ一覧にも出てきません。
普通にインポートできるものじゃないんでしょうか?

811:810
04/09/09 03:07
System.Runtime.Remotingを参照設定したら解決しました。
すみませんおさわがせしました。

812:デフォルトの名無しさん
04/09/09 17:09
Windowsアプリケーションを作成しています。
プログラムの中で予期せぬエラーが発生した場合に、共通のエラーメッセージを表示したいのですが、
すべてのイベントにTry~Catchを書かずに実現する方法はありませんか?
ASP.NETではGlobal.asaxでApplication_OnErrorにエラーメッセージ表示を記述すれば実現できたのですが、Windowsアプリケーションでは無理なんでしょうか。。。

813:デフォルトの名無しさん
04/09/09 17:50
>>812
試してないけど
Application.ThreadException イベント
はダメだった?

814:デフォルトの名無しさん
04/09/09 23:47
質問です。
実行時にフォームに labelコントロールを作ろうとしています。
C = New Label
Me.Controls.Add(C)
ってやると作れるのはわかりました。
既にある Label1 のコピーみたいなのはできませんか?
C = Label1 ってやると実態は増えてないし、
New Label を Label1 で初期化できるといいのですよ。
なにかやり方ありますか?

815:デフォルトの名無しさん
04/09/10 00:53
あるわけねーだろ馬鹿

816:814
04/09/10 11:40
>>815
そっか。じゃ しかたない。

817:デフォルトの名無しさん
04/09/10 11:46
現在の Object の簡易コピーを作成します。

[Visual Basic]
Protected Function MemberwiseClone() As Object

[C#]
protected object MemberwiseClone();

818:デフォルトの名無しさん
04/09/10 12:13
For Nextでクルクル回しながら得た値を

TextBox1.Text
TextBox2.Text

と順番に突っ込んで生きたいのですが

For i = 1 TO 10

として

TextBox"i".Textと言う格好で、末尾を変数にしての
名前の指定の仕方がわからず困っています。

どなたかボスケテいただけませんか?

819:デフォルトの名無しさん
04/09/10 12:22
どうしてもそういうヘンなことがしたいのなら、>>545あたりを一読した上で、
Type.GetField と FieldInfo.SetValue あたりを使えばいいと思うけど、絶対お勧めしない。
事前にコントロールへの参照を配列に入れておいたほうがいいと思う。

820:デフォルトの名無しさん
04/09/10 13:12
特別な事情がないなら>>819の方法がいいと思う。

821:デフォルトの名無しさん
04/09/10 13:44
>>819
今回はSetValueじゃなくて、FieldInfo.GetValue で TextBox をとってきてから普通に Textプロパティにセットだね。
でも漏れも絶対にお勧めしない。

822:デフォルトの名無しさん
04/09/10 15:49:41
>>818
Public Function FindControl2(ByVal ctl As Control, ByVal name As String) As Control


Dim myPropertyInfo As System.Reflection.PropertyInfo

Dim myObject As Object


myPropertyInfo = ctl.GetType().GetProperty(name _

, Reflection.BindingFlags.Instance _

Or Reflection.BindingFlags.NonPublic)


If Not myPropertyInfo Is Nothing Then


myObject = myPropertyInfo.GetValue(ctl, Nothing)

Return CType(myObject, Control)

End If

Return Nothing

End Function
for i as int32 = 0 to 10
findcontrol2(me,"textBox" & cstr( i) ).text="aheahe"
next

823:デフォルトの名無しさん
04/09/10 16:10:09
絶対できない無理
とか言われると、意地でもなんか探してくる性

824:814
04/09/10 21:19:50
>>817
なんだ、本当はあるのか。
でも使い方がよくわからないよ。
Label1.MemberwiseClone なんて出来ないみたいだし。
新しいクラスを作るのかな?
もう少し教えて。

825:デフォルトの名無しさん
04/09/10 23:06:21
できるわけね~だろ

826:デフォルトの名無しさん
04/09/10 23:07:24
>>817
変な事教えるなよ…

827:最凶VB厨房
04/09/10 23:14:34
URLリンク(www.microsoft.com)

828:sage
04/09/11 03:02:39
>>818
こういうことでええどすの?

Const s As String = ",うほ,いい男"
Dim i As Integer
For i = 1 To 2
Form1.Controls("Text" & i).Text = Split(s, ",")(i)
Next


ところでVBでのバイナリデータの暗号化方法を誰か教えて。
capicomではバイナリの暗号化は無理ですの?
お金かけずに作りたいのでCryptLightは無しの方向でお願いしまっす。

829:デフォルトの名無しさん
04/09/11 05:05:47
他のアプリで押された特殊キーの状態とかをトリガにして処理開始したいのですが
vbで他のアプリで押されたキーの状態とか取得できますか?
よくわかってないんですが自分のプロセスならwinprocとかでメッセージ拾って
なんかできそうなんですが。。。


830:デフォルトの名無しさん
04/09/11 11:55:20
特殊キーを押すアプリがあるとは知らなかった。。

【こんなアプリはイヤだ】

モニタから手が出てきて特殊キーを勝手に押すアプリ

831:デフォルトの名無しさん
04/09/11 13:06:57
>>828
それ本当にやってみた?
controlsはインデックスだから名前入れらんねーんだけど
ここはvb.netでvbaのスレじゃねーですぜ
(vbaじゃそれ重宝してたんだけどね)


832:デフォルトの名無しさん
04/09/11 14:05:36
Handlesキーワードで指定されたイベント(Button1.Click, Form1.Load)を取得する方法ってありますか?

833:デフォルトの名無しさん
04/09/11 14:47:06
なんかイベントハンドラのコレクションを取得するメソッドだったかがあったような気がする。


834:832
04/09/11 15:13:50
>>833
ありがとうございます。
一度調べてみます。

835:デフォルトの名無しさん
04/09/11 16:03:51
TCPでの送受信を勉強してるんだけど、チャットを作るとしたら
送信用と受信用を別Threadにして役割分担させるのが妥当なのかな?
普通にNetworkStreamを使うと、受信しようとしたとたん他のことができなくなっちゃうよね?


VB.NETで簡単なチャットを作ることを教えてるサイトないかな?勉強用に見たい。

836:814
04/09/11 20:44:06
>>825 >>826 >>827
ん~ 結局できるのかできないのかさえわからん。
できないって言う人の方が多いな。

837:デフォルトの名無しさん
04/09/11 20:58:25
少なくとも、MemberwiseCloneなどを利用してとか単純な方法では出来ない。
>>822とかみたいに強引に実装したらできるかもしれない。


838:デフォルトの名無しさん
04/09/11 21:36:58
すみません。
コマンドでipconfig /releaseと/renewがあると思うのですが、VBで実行するには
どうしたらいいのでしょうか?結果まで出力出来れば嬉しいのですが。

ネット等で探したのですがコマンドの実行すら探しだせませんでした。

839:814
04/09/11 21:55:41
>>837
ふむふむ。わかりました。
ありがとうございました。

840:デフォルトの名無しさん
04/09/11 22:27:28
>>838おまいが分からないのは、
・そもそもプロセスの起動方法
・起動するプロセスへのコマンドラインオプションの渡し方
・結果の取得の仕方
・ipconfigがなんかおまいに取って特殊で、ipconfigに関して分からない
どれだ?

841:838
04/09/12 00:06:40
>>840
多分、コマンドラインオプションの渡し方と結果の取得が
分からないです。あとは大体分かるので。

842:デフォルトの名無しさん
04/09/12 01:15:52
>>841
こちょこちょと書かないで今どんな風にやってるのかとか書いて欲しいなあ。
※何が分からんのか分からないんだよね。
Processクラスで起動してるって事でいい?

コマンドラインオプションはメソッドでもろに指定できるやつがあるけど、
指定の仕方がわからない?

結果の取得(こっちは標準出力の取得とみなして…)等の細かい制御をするには、
ProcessStartInfoクラスを使う必要があったはずだと思う。

っていうか、ProcessStartInfoのヘルプ見たらほとんど分かるんじゃない?

843:デフォルトの名無しさん
04/09/12 01:17:43
>>841
っていうか、多分てなんだよ多分て…

844:最凶VB厨房
04/09/12 03:47:10
>>835
見たか?非同期でどぞ。
URLリンク(www.microsoft.com)

845:デフォルトの名無しさん
04/09/12 03:52:03
textboxやrichtextbox内の文字の中から、特定の文字列だけの色を変える方法はどうやれば良いのでしょうか?
例えば、htmlソースのタグや、cソース内の予約語の色を変えたりです。

TextChanged内に記述する形で
タグや予約語を認識すると、その部分のみ色を変更という形をイメージしているのですが
具体的にどうやれば良いのかわからないので、どうかご教授お願いします。

846:デフォルトの名無しさん
04/09/12 05:55:21
他のアプリケーションがOSにスタンバイ要求を出したり、スタート
メニューから[終了オプション]-[スタンバイ]を選んだりした時に
それを検出して、本当にスタンバイしたいのかどうかを確認する
ダイアログを表示、スタンバイしたくなければそれを中止するモノ
を作りたいと思っているのですが、

AddHandler SystemEvents.PowerModeChanged, _
AddressOf SystemEvents_PowerModeChanged

すれば、スタンバイに入ろうとしていることを検出するところまでは
わかりました。この後、スタンバイを中止する方法がわかりません。
(ダイアログを表示したところでスタンバイに移行してしまいます)
どなたか教えていただけないでしょうか。

847:デフォルトの名無しさん
04/09/12 06:20:27
>>844
サンクス。がんがってくる

848:デフォルトの名無しさん
04/09/12 12:45:35
ピクチャーボックスを複数使ってビューアのようなものを作っているのですが、
PictureBox1.Image = New Bitmap(strPicture_File_Path)

PictureBox1.Image = Image.FromFile(strPicture_File_Path)
のように
画像ファイルを読み込むときに画像ファイルのサイズが大きい場合、かなり時間がかかるんです。一枚ならまだいいんですが、複数の画像を各々Imageに読み込みたいため、かなり遅く感じます。これを早くする方法はありますか?
回答をお待ちしております。お願いいたします。


849:812
04/09/14 16:41:22
>>813
できました!
ありがとうございます。
起動したフォームだけじゃなくそこから開いた別のフォームでも
エラー処理をトラップすることができました。

850:デフォルトの名無しさん
04/09/14 17:33:33
>>848
メモリを増設

851:デフォルトの名無しさん
04/09/14 18:08:08
質問です。
フォームの中にテキストボックス等のコントロールが複数あるのですが、
実行時にフォームのサイズが変更された場合、コントロール間の距離を保ったまま
コントロールの大きさを変更させたいのですが、どうしたらよいですか?
Anchorの対象をフォームではなく他のコントロールにするみたいな感じです。


852:デフォルトの名無しさん
04/09/14 20:54:23
>>851
質問です。
試行錯誤してますか?そうは思えませんが。。
そんな質問をする自分を恥には思いませんか?

853:デフォルトの名無しさん
04/09/14 21:08:24
あ~明日VBの試験だあ~

854:デフォルトの名無しさん
04/09/14 21:31:19
まあそう言わず。
>>851
パネルかなんかにぶっこむのが楽でねぇ?

855:デフォルトの名無しさん
04/09/14 22:04:10
>>850
違うと思います。

何か違うやり方とか

856:デフォルトの名無しさん
04/09/14 22:10:24
>>855
俺も >>850 が正解かと思ったけど。
どれくらいのサイズの画像を何枚くらい読み込もうとしてるの?>>848
そもそもディスクが遅いっていうオチじゃ嫌よ。

857:デフォルトの名無しさん
04/09/14 22:56:02
>>856
読み込む画像は基本的に1MBくらいのJPGを5枚です。
マシンもPentium M(1GHz)、メモリも756MBだし。そこそこ最近のですよ。
普通にあるのフリーのビューアーだってストレスのない早さなのに
自作のプログラムが遅いのは不満です。
何かいい方法はありませんか?
例えば、ファイルを並行に読み込むとか??


858:最凶VB厨房
04/09/14 23:11:42
URLリンク(www.microsoft.com)

859:デフォルトの名無しさん
04/09/15 00:28:53
>>858
ありがとうございます。
でも、このやり方でやっています。

そもそも
Dim image = New Bitmap("Texture.jpg")
の処理に時間がかかっているのです。


860:デフォルトの名無しさん
04/09/15 00:50:28
そこそこ精度の高いFAXTIFをImage.FromFileで読み込んだけど
そんなに遅くなかった気がする
512MB 1.1GHz

そのイメージをファックスドライバに送ってファックス送信した

861:デフォルトの名無しさん
04/09/15 00:50:37
すみません,>>845解る方いらっしゃらないでしょうか(´Д`)

862:最凶VB厨房
04/09/15 01:56:26
URLリンク(www.microsoft.com)
は?
textboxは部分文字列は色変更できないはず。

863:デフォルトの名無しさん
04/09/15 01:58:27
>>857
1MBのJPGを読み込めば、メモリ上では50~100MBとかになる。
850のレスに対してはスワップの発生状況について言及すべき。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch