1 名前:デフォルトの名無しさん [04/07/03 08:49] VB.NETの質問全般です 過去スレ VB.NET質問スレ (Part5) pc5.2ch.net/test/read.cgi/tech/1078134703/ VB.NET質問スレ (Part4) pc2.2ch.net/test/read.cgi/tech/1065269043/ 【老若】VB.net質問スレ【男女】 (Part3) pc2.2ch.net/test/read.cgi/tech/1056281084/ 【老若】VB.net質問スレ【男女】 (Part2) pc2.2ch.net/tech/kako/1043/10436/1043629429.html 【老若】VB.net質問スレ【男女】 pc2.2ch.net/tech/kako/1025/10258/1025848458.html
496 名前:デフォルトの名無しさん mailto:sage [04/08/13 00:25] あ、ちょっと勘違いしてたかも… 言いたかったのは、メニューからペーストした場合とか、 要はキー入力以外でも書き換えられる可能性はあるという意味だったんだが…
497 名前:483 mailto:sage [04/08/13 00:43] >>496 なるほどね。ペーストされちゃダメだわ。 でも言われて TextChanged バージョンも作ってみたけど結構めんどうそうだよ。 Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged Dim c As Integer Dim v As Decimal c = TextBox2.SelectionStart If c > 0 Then If InStr("0123456789", TextBox2.Text.Substring(c - 1, 1)) = 0 Then TextBox2.Text = TextBox2.Text.Replace(TextBox2.Text.Substring(c - 1, 1), "") TextBox2.SelectionStart = c - 1 End If End If c = TextBox2.Text.Length - TextBox2.SelectionStart v = Val(TextBox2.Text.Replace(",", "")) TextBox2.Text = Format(v, "#,##0") If TextBox2.Text.Length - c > 0 Then TextBox2.SelectionStart = TextBox2.Text.Length - c End Sub まだちょっとおかしい。
498 名前:483 mailto:sage [04/08/13 00:57] もっと簡単になったよ。 Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged Dim c As Integer Dim a As Integer Dim v As Decimal c = TextBox3.Text.Length - TextBox3.SelectionStart For a = 0 To TextBox3.Text.Length - 1 If InStr("0123456789", TextBox3.Text.Substring(a, 1)) > 0 Then v = v * 10 + Val(TextBox3.Text.Substring(a, 1)) End If Next TextBox3.Text = Format(v, "#,##0") If TextBox3.Text.Length - c > 0 Then TextBox3.SelectionStart = TextBox3.Text.Length - c End Sub こんなもんでいいのかな?
499 名前:デフォルトの名無しさん mailto:sage [04/08/13 00:57] だからそもそもそんな糞みたいなUI採用するのが間違っとる。 まあそれは置くとしても入力制限するんだからそもそもペーストに反応しちゃまずい。 そして入力制限さえ出来れば、後の処理はParseしてToStringするだけ。 TextBox1.Text = Integer.Parse(TextBox1.Text).ToString("###,###,###,###,###,###")
500 名前:483 mailto:sage [04/08/13 01:19] >>499 1行で出来るよってこと? そうだったのか、かっこ悪い漏れ orz 後は任せた。
501 名前:デフォルトの名無しさん [04/08/13 08:42] >>486 自分もそのクチだけど、けっこう新しい発見があるので損はしないよ。
502 名前:デフォルトの名無しさん [04/08/13 09:14] 偉そうなこと言う奴に限ってxxx 499 < 498
503 名前:デフォルトの名無しさん [04/08/13 17:12] >>502 まあおまえは何も出来ない無能なわけだが。
504 名前:デフォルトの名無しさん mailto:sage [04/08/13 18:29] OSの作り方教えてください。
505 名前:デフォルトの名無しさん mailto:sage [04/08/13 20:53] TabControlなのですが、ふと気付くとタブの順序が入れ替わって しまっていることがありるのですが、戻す方法は無いでしょうか・・・
506 名前:デフォルトの名無しさん mailto:sage [04/08/13 21:05] Tabつながりでふと思い出したこと TABキーを押したときの順番をGUIで変更することってきる?(ACCESSみたいに) .NET発表の際にその辺が強化されたって話を聞いてたんだけど
507 名前:デフォルトの名無しさん mailto:sage [04/08/13 22:29] >>502 まぁほっといてやれ。 もともとの質問出した >>473 が好きなほうを選ぶよ。
508 名前:デフォルトの名無しさん mailto:sage [04/08/13 22:45] >>505 デザイン時? 実行時? デザイン時なら、TabPageコレクションエディタの [↑] [↓] ボタンで 順番は変えられるよ。 実行時なら、もう少し詳しく現象を報告してちょ。
509 名前:デフォルトの名無しさん mailto:sage [04/08/13 22:46] >>506 旧VBって、できなかったの?
510 名前:デフォルトの名無しさん mailto:sage [04/08/13 22:50] >>508 デザイン時なら、TabPageコレクションエディタの [↑] [↓] ボタンで できました。ありがとうございます。 実行時に勝手に変わるということは無いと思うので、デザイン時だとは思うのですが そのプロパティはいじってないし、ふと気付くと変わってることがある状態で気持ち 悪いです(しく VB.NET(2002)
511 名前:506 mailto:sage [04/08/14 03:07] 自己解決 表示のタブオーダーでできました
512 名前:506 mailto:sage [04/08/14 03:12] >>509 もしかしたら有るのかもしれないけど 一個一個オサルのごとく数値変えてました(w
513 名前:デフォルトの名無しさん [04/08/14 16:15] VB.net 2003でWindowsコントロールライブラリの勉強をしています。 UserControl上にLabelとButtonを追加したユーザーコントロールに 新たなプロパティーを追加する場合について質問です。 <System.ComponentModel.Browsable(True)> _ Public Property tProp_Button() As Button Get Return Me.Button1 End Get Set(ByVal Value As Button) Me.Button1 = Value End Set End Property Buttonをデザイン上で変更出来るようにする為に上記のコードを記述すると、 そのユーザーコントロールを貼り付けた別のプロジェクトのデザイン上では、変更した値が表示される(例えば.textに"hoge"とするとボタンに"hoge"と表示される)のですが、 そのプロジェクトを実行させた場合、デザイン上で変更した値が反映されません。 ただ、Buttion1の宣言をpublicにして、コードで変更した値は、実行時には正常に反映されます。 コントロール自体をデザイン上で変更出来る様にするにはどのようにすればよいのでしょうか?
514 名前:デフォルトの名無しさん mailto:sage [04/08/14 16:23] なにがしたいのかさっぱり分からん。 デザイナ上でコントロール自身を変更するってどういうこと? っていうかコントロール自身を入れ替えてどうするの?
515 名前:デフォルトの名無しさん [04/08/14 19:42] >281さん、結果報告キボンヌ。 ぢつはおいらも、別フォームで入力したテキストの内容を、セクション1の テキストオブジェクトに表示したくて、Googleで調べたらここに辿り着いた っす。 で、そのテストに>290さんのをやってみました。 ビューワーを指定したFormを開くときに、>290さんのコードを実行している んですが、ビルドエラーなどは出ないんですけど、Text1は空っぽのままっす。 表示したビューワーをリロードしても表示されませんです。 >281 さん、上手くいったなら、報告をながいます。
516 名前:デフォルトの名無しさん mailto:sage [04/08/15 00:24] 質問なのですが、下のリンク先にある、Visual Basic .NET 2003というものは、Visual Studioを使った時のようなエディタがついているのでしょうか? ttp://www.microsoft.com/japan/msdn/vbasic/productinfo/default.asp 兄が、仕事で使っているというVB.NETでは、関数の名前を入力した後、ピリオドをうつと各プロパティとか命令が表示されて、かつそれぞれのヘルプまで表示されると聞いたのですが、その機能がほしいのです。
517 名前:デフォルトの名無しさん mailto:sage [04/08/15 00:37] >>514 それは君が無知で無恥だから。ユーザーコントロールって概念が理解できてないんだろ。 知らないなら黙ってろよ。 何をやりたいかは>>513 の文章で理解可能。俺は解決法は知らないけど。 ま、でもデザインモードでの変更がコードに反映されてないだけだろうから そんなに難しい問題じゃない気がするけど。 .NETではVB6みたいにウィザードがコード書いてくれないのか?
518 名前:デフォルトの名無しさん mailto:sage [04/08/15 00:55] >>517 うーむ、俺が無知なら正直すまんかったんだが… 見たところユーザコントロールに既に貼り付けてあるボタンのインスタンスを プロパティで入れ替えようとしてるんだよね? ってかいてて今やりたいことが多分分かった… 普通その場合は、プロパティを読込専用にするだろ? 入れ替えできるようなプロパティを書いてるから勘違いしてたよ。
519 名前:デフォルトの名無しさん mailto:sage [04/08/15 00:57] あと、VB.NETで貼り付けたコントロールの実体はプロパティなので、 普通はメンバをPublicにするだけでOK。 まあ、新たに追加してもいいことはいいんだけど…
520 名前:デフォルトの名無しさん mailto:sage [04/08/15 01:00] って何度もすまん、これじゃデザイナでできないって言ってるのか… まえに同じような事して単純に出来たような気がするんだけど…未確認。 生成されたコード上でのプロパティの設定順かな…?
521 名前:デフォルトの名無しさん mailto:sage [04/08/15 01:15] >>516 「VB.NET単体でVS.NETと同じようなテキストエディタが用意されているのか?」 と言う質問ですか? それなら答えはYesです
522 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [04/08/15 12:51] >>521 ありがとうございます。
525 名前:デフォルトの名無しさん mailto:sage [04/08/15 13:10] >>523 デザイナで生成されたコード内に、プロパティの変更コードは出てる?
526 名前:デフォルトの名無しさん mailto:sage [04/08/15 15:33] エクスプローラの詳細表示のような、横に複数項目表示できるリストボックスって VB.NET標準コントロールには無いの?
527 名前:526 mailto:sage [04/08/15 15:46] 悪い。自己解決した。ListViewだったね
528 名前:デフォルトの名無しさん [04/08/15 22:31] test
529 名前:デフォルトの名無しさん mailto:sage [04/08/16 09:04] >513 どっかで見た質問だなぁ。 どこで見たんだろ……まぁいいや。 そんときは >#Region " Windows フォーム デザイナで生成されたコード " この中で初期化してた、ってオチだったよ。
530 名前:デフォルトの名無しさん mailto:sage [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] ja.gotdotnet.com/quickstart/howto/doc/Remoting/mainfeatures.aspx リモート処理の概要 参照によってオブジェクトを渡すのサンプルを実行すると、 セキュリティ制限のため、型 System.Runtime.Remoting.ObjRef にアクセスできません。 というエラーがでます。 クライアント、リモート オブジェクト、およびリモート ホスト アセンブリを異なるディレクトリに置いてサンプル実行しています。 対策ご存知の方、教えてください。
532 名前:自己解決 [04/08/16 18:43] >>531 自己解決。お騒がせ↓ www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconautomaticdeserializationinnetremoting.asp
533 名前:513 [04/08/16 23:08] >>529 確かに #Region " Windows フォーム デザイナで生成されたコード " の中は、デフォルトのままです。具体的には、どのように修正すれば宜しいのでしょうか? >>530 確かに、通常は必要と思われるプロパティのみ公開するのですが、 ボタンコントロールなどは、予めどれが必要と言われると、ほぼ全部使う可能性があると思われます。 その場合、数十にもなるプロパティを記述していくのは・・・という事と、 勉強も兼ねて、コントロール自体のプロパティを全て公開するにはどうするのだろうと、疑問に思い 質問した次第です。
534 名前:473 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [04/08/19 20:23] >537-538 DBは何を使ってるんだよ。 DBから主キーを取得できてないって事。
540 名前:デフォルトの名無しさん mailto:sage [04/08/19 22:10] >>536 ガッ
541 名前:535 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [04/08/19 23:32] そのAPIって参照設定で読み込めたりしないのかと横着を考える
543 名前:541 mailto:age [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 名前:デフォルトの名無しさん mailto:sage [04/08/20 08:15] >>543 だめ。構造体の宣言で、マーシャリングをきっちり指定する必要あり。 結構面倒だよ。
545 名前:デフォルトの名無しさん mailto:sage [04/08/20 17:04] .netであるクラスのプロパティを動的に参照するため wk1 = ClassA.PropA wk2 = ClassA.PropB ↓ wk1 = ClassA.xxxx("PropA") wk1 = ClassA.xxxx("PropB") のような感じにしたいのですが どのようにコーディングすればよいでしょう??? VB6時代だとProperties("PropA")のようなことができた気が…
546 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [04/08/20 18:50] >>546 スマソ。typeof は C# か。
548 名前:デフォルトの名無しさん mailto:sage [04/08/21 00:55] >>546-547 >GetType(a).GetProperty("PropA").GetValue(a, Nothing) 書き込み後なんとかGetType(a).GetProperty("PropA")のプロパティ情報列挙までは自己解決していましたが GetValue()の配列indexの使用法を間違ってました。 配列要素でないときはNothingなのかー! 激さんくすです!!
549 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [04/08/21 20:17] どうでもいいけど昇順と降順間違ってないか?
552 名前:デフォルトの名無しさん mailto:sage [04/08/21 22:05] いろいろ
553 名前:デフォルトの名無しさん mailto:sage [04/08/21 22:51] まだVB.NET初めて間もないのですが 以下のようなコードで「オブジェクト参照のインスタンスがありません」 とエラーが出てしまいます。 dim wrk_item() as string wrk_item(0) = "テキスト" ←ここでエラーが起こってます wrk_item(1) = "テスト" エラーの原因がわかりません。配列の要素数はあらかじめ決めておかないと だめなのでしょうか・・・
554 名前:デフォルトの名無しさん mailto:sage [04/08/21 23:17] dim wrk_item() as string = { "","" }
555 名前:デフォルトの名無しさん mailto:sage [04/08/21 23:19] 「配列を参照する事のできる」変数を定義しただけで、 「配列自体を作成」していない。変数の初期もしていない。 よって「配列を参照する事のできる」変数はNothingのままだから以下省略
556 名前:デフォルトの名無しさん mailto:sage [04/08/21 23:20] >>554 ありがとうございます やはり配列要素を決めておかないとだめみたいですね
557 名前:デフォルトの名無しさん mailto:sage [04/08/21 23:22] >>555 なるほど、そういうことでしたか・・・
558 名前:デフォルトの名無しさん mailto:sage [04/08/21 23:33] >553 ArrayListとかReDimとか使えば?
559 名前:デフォルトの名無しさん mailto:sage [04/08/22 10:21] ボクのPCはDELLのディメンションですがVB.NETをうごかしてもこわれないでしょうか?
560 名前:デフォルトの名無しさん mailto:sage [04/08/22 10:24] 残念ながらどこのPCでも壊れるときは壊れます。
561 名前:デフォルトの名無しさん mailto:sage [04/08/22 14:15] まあ、基本的にはArrayListあたり使うのが常套かな。
562 名前:デフォルトの名無しさん [04/08/22 18:56] >>559 VisualStudio.net入れると壊れる可能性が高いですね。
563 名前:デフォルトの名無しさん [04/08/23 09:19] >>550 ここは初心者の来る場所じゃありませんYOwwwwwwwwwwwwwwwwwwwwwwwww
564 名前:デフォルトの名無しさん mailto:sage [04/08/23 12:35] かといって高度な問題には解答が出来なかったりする
565 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [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 mailto:sage [04/08/23 16:44] >>565-566 無理。そもそも String が帰る時だって、値の型を取得しているだけで "変数" のタイプを取っているわけじゃないし。
570 名前:デフォルトの名無しさん mailto:sage [04/08/23 21:02] >>569 よくわからんが無理ってことはないんじゃないか? むしろインスタンスからしか型に関する情報を取れないなんてライブラリの方が 不条理な気がする。 www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vblr7/html/vaoprgettype.asp と www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemtypeclassgettypecodetopic.asp の組み合わせでいけるんじゃないだろうか。
571 名前:546 mailto:sage [04/08/23 23:56] >>570 レスされたので答えるけど、その手のメソッドでは無理。 IL にコンパイルされた後はそもそもローカル変数なんて タイプ情報にも存在しなくなっちゃうんで、 「ローカル変数が何型で宣言されたか」ってな情報を得るには、 ライブラリではなく言語自体によるサポートが必要。 値型 (value types - 単純型や structure) のものなら、 変数宣言と同時にインスタンスが作成されるので大丈夫だけど(と思う)
572 名前:デフォルトの名無しさん mailto:sage [04/08/24 00:37] >>565 ちなみになんでそんなことがしたいわけ? >>571 も言ってるけど、ライブラリじゃなくて言語仕様で そういう機能があるかどうかの問題になるね。
573 名前:565-566 mailto:sage [04/08/24 00:55] >>569 >値の型を取得しているだけで >"変数" のタイプを取っているわけじゃないし。 私も同様の認識だったのですがデバッグ中に… Dim s As String 直後のステップをブレーク、イミディエイトにて ?type.GetTypeCode(s) と実行した際、 「型 'String' の値を 'System.Type' に変換できません。」 といったメッセージが出たもので… 「あれ?エラーだけどここで'String'と認識するってことは…なにかしらの記述で変数のタイプも取得できるのか???」と…
574 名前:デフォルトの名無しさん mailto:sage [04/08/24 11:51] Form1で Dim f2 As Form2 f2.show() のようにしてForm2を表示して、そのForm2からForm1のTextbox1の内容を操作するにはどうしたらいいんですか? Form1からForm2の操作はできるんですが・・・その逆を行おうとするとエラーがでます。
575 名前:デフォルトの名無しさん mailto:sage [04/08/24 12:31] またVB6から進化できてない人間が迷い込んだな。。
576 名前:デフォルトの名無しさん [04/08/24 12:39] だから旧VBスレも合わせて、スレの>>1 のテンプレに愚問集作ってそこに 『別フォームの……』 を入れとくべきだろう。
577 名前:デフォルトの名無しさん [04/08/24 12:39] ここは初心者の来る場所じゃありませんYOwwwwwwwwwwwwwwwwwwwwwwwww
578 名前:デフォルトの名無しさん mailto:sage [04/08/24 12:50] そして、煽りも要りませんので・・・ とりあえず過去ログ読みまっしょ
579 名前:デフォルトの名無しさん [04/08/24 13:23] >>577 すいません 初心者はどこへ行けばよいですか?
580 名前:デフォルトの名無しさん mailto:sage [04/08/24 14:15] >>579 ここは2ちゃん。「うるせー馬鹿」が返しの挨拶。
581 名前:デフォルトの名無しさん mailto:sage [04/08/24 14:51] あの〜 いつぞやに、.NETの板が出来たと思っていたのですが、 あれは夢だったのでしょうか?
582 名前:デフォルトの名無しさん mailto:sage [04/08/24 15:55] >>581 ( ゚Д゚)氏ね
583 名前:デフォルトの名無しさん mailto:sage [04/08/24 19:46] >>581 >>224 のことか?
584 名前:デフォルトの名無しさん mailto:sage [04/08/24 21:39] >>577 初心者の来る掲示板だと思います。ぼくはね。 で、>>574 みたいなのは、ハンドル渡すとか、 Form1 のほうで面倒見てあげるとかして実現は可能だと思う。 いまだによくわからないのだけど、答えはどっちなん? 「コードを工夫して実現する」 or 「かっこ悪いからやってはいけない」
585 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [04/08/24 22:35] >>586 問題のソース圧縮してどっかにうpすれば?
588 名前:デフォルトの名無しさん mailto:sage [04/08/24 22:47] >>585 例外的な場合を除けば、どっちも不正解だと思う。 そんなことをすればデータ隠蔽の効用が全部失われてしまう。 実際にデータを持つオブジェクトからハリボテ君(Form1)に イベントで通知するのが正解だろう。
589 名前:デフォルトの名無しさん mailto:sage [04/08/24 23:14] >そんなことをすればデータ隠蔽の効用が全部失われてしまう。 その判断の根拠を教えてくれ。 って>>584 の言ってる事の方が普通じゃないと思うが…
590 名前:デフォルトの名無しさん [04/08/24 23:40] ヴァカ降臨! www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14151&forum=3
591 名前:駆け出し mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [04/08/24 23:59] TextBox1.Textが""なんじゃないの?
593 名前:駆け出し mailto:sage [04/08/25 00:06] >>592 TextBox1の中身は(目で見る限り)整数が入っています。 実際、ループ中の強制終了さえしなければ妥当な結果が得られています。 アプリケーションの終了でTextBox1の中身がクリアされてしまう、と言われれば なんとなくそうかなあとは思うのですが、 素人考えでは、「X」ボタンのクリックが処理されるのは ”Application.DoEvents()” のところであって、だとするとわざわざその次の行まで処理が進んでエラーが出るのも おかしいんじゃないかと思ったり、悶々と悩んでいる次第です。
594 名前:デフォルトの名無しさん mailto:sage [04/08/25 00:31] うーん、細かい内部動作までは知らないんだけどさ… Application.DoEvents()でフォームが閉じるわな。 閉じ終わったら処理が戻ってくるわな。 Windowの破棄とかが具体的にどのタイミングなのかは知らないけど、 この時点でTextBoxが空になってるというのはありえそうな話だ。 まあ、ObjectDisposedExceptionになりそうな気もするけどそこはそれ。 勘違いしてそうだが、×ボタンクリック=アプリケーションその場で強制終了じゃないぞ。 ちゃんと最後まで処理は続く。
595 名前:デフォルトの名無しさん mailto:sage [04/08/25 00:34] DoeventsだからこそForm Unloadとその他のプログラムの動作がマルチタスクで動く。 ところでDoevents中に×ボタンを押したときにちゃんと終了するプログラムを書けるかどうか見守ってやる
596 名前:592 mailto:sage [04/08/25 00:37] 書こうと思ったら>>594 氏が書いてくれたか Application.DoEvents()で閉じる処理を拾った後(フォームが破棄されてる)に parameter = CInt(TextBox1.Text)を実行してるから空っぽ DoEventsはどの順序でイベントが発生したか追跡が難しいから あまり使うことはおすすめできない