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
449 名前:最凶VB厨房 mailto:sage [04/08/10 20:21] 2箇所のEnd Subの前に MessageBox.Show("Button2.Enabledは" & Button2.Enabled.ToString()) をつけてやっとーみ。
450 名前:デフォルトの名無しさん mailto:sage [04/08/10 21:13] レスどうもです。 ひょっとしてEnabled = Falseになっているコントロールは、 グループボックスと連動してEnabled = Trueに出来ないのでしょうか? そうならちょっと不便(;´Д`)
451 名前:最凶VB厨房 mailto:sage [04/08/10 21:18] ボタン2が有効か無効かは この場合グループボックスとボタン2の論理積(And)となる。 つまりはグループボックスのEnabledを操作すればいいだけ。
452 名前:デフォルトの名無しさん mailto:sage [04/08/10 21:42] >>450 もう解が得られたようだけど、 >ひょっとしてEnabled = Falseになっているコントロールは、 >グループボックスと連動してEnabled = Trueに出来ないのでしょうか? もしそういう感じの仕様になっていると、そのうち 「グループボックスやフォームなどのコンテナに入っているコントロールは、 必ずコンテナと連動してEnable = True になってしまうのでしょうか。 そうならかなり不便」 ということになると思う。
453 名前:450 mailto:sage [04/08/10 22:10] グループボックス=ON ボタン2=ON ←真 グループボックス=OFF ボタン2=OFF ←真 グループボックス=ON ボタン2=OFF ←偽 グループボックス=OFF ボタン2=ON ←偽 弱い頭で考えますた。間違ってます?
454 名前:最凶VB厨房 mailto:sage [04/08/10 22:14] 知らんかったら論理積で検索して確かめな。
455 名前:デフォルトの名無しさん mailto:sage [04/08/10 22:20] >>450 ええと、 ・ウィンドウ(フォーム)が Enable = False の場合、中のコントロールは (Enableの値に関わらず) 全て無効 ・グループボックスが Enable = False の場合、中のコントロールは (Enableの値に関わらず) 全て無効 ってことですよ。コンテナ側が無効だと、中身は無効。 喪前の学校が休みのときは、どのクラスも休み。 喪前のクラスが休みのときには、元気な奴も病気の奴も皆休み。 学校もクラスも休みじゃないときには、病気 (Enable = False) の奴だけが休み
456 名前:450 mailto:sage [04/08/10 22:44] 理解できました! 最凶VB厨房殿、デフォルトの名無しさん殿ありがとうでした(`・ω・´)
457 名前:デフォルトの名無しさん mailto:sage [04/08/11 00:02] だれか突っ込んでやれよ。 >>450 >If Me.GroupBox1.Enabled = True Then > Me.GroupBox1.Enabled = False >ElseIf Me.GroupBox1.Enabled = False Then > Me.GroupBox1.Enabled = True >End If このコードはあまりにひどいだろ。 Me.GroupBox1.Enabled = Not Me.GroupBox1.Enabled か、せめて If Me.GroupBox1.Enabled Then Me.GroupBox1.Enabled = False Else Me.GroupBox1.Enabled = True End If だろ、普通。
458 名前:デフォルトの名無しさん mailto:sage [04/08/11 02:23] >>457 スレ違いを承知で突っ込んでおくが、>>450 の書き方が決して「良くない」 とは言えない場合もあるよ。 Boolean 型が何バイトか考えてごらん。VB.netでは2バイト(=8ビット)だ。 BOOL型が存在しないCなどでは #define BOOL char #define TRUE 0x01 #define FALSE 0x00 とか書いてたりすることもある。こうなると BOOL HogeFlag=TRUE; if(HogeFlag==TRUE) wow(); // (1) if(HogeFlag) wow(); // (2) と、(1)と(2)では挙動が同じでも違いが良くわからなかったりする。 大勢の人間が寄ってたかって複数の言語で開発するような現場の場合、 よほど速度チューニングが求められない限り、冗長でもいいから明示的に 誰でも解るように書くのが暗黙の了解だったりする。 とにかく、自分の主観だけで他人のコードを「あまりにひどい」などと 言うのは良くないよ。
459 名前:458 mailto:sage [04/08/11 02:24] 2バイト=16Bitだ。。。_| ̄|○
460 名前:デフォルトの名無しさん mailto:sage [04/08/11 11:02] >>458 なんかフォーカスがずれたお人だね。そういうの「為にする議論」っていうんだよ。 「冗長でもいいから明示的に誰でも解るように」という要件は、 <.NETでは>Booleanという型が存在しそれを利用することで必要十分に満たされている。 Booleanってそもそも何だと思ってるの?(ついでに、Boolean=ワード、ってのは旧VBの仕様) 違う道具(C)の作法をそのまま適用して何になる。 一般論をしてるだけだって? 特殊なケースでの冗長なコードの効用を過剰に一般化してるだけじゃん。 そういうの「馬鹿の一つ覚え」とか「羹に懲りて膾を吹く」って言う。
461 名前:450 mailto:sage [04/08/11 11:53] >>457 大変勉強になりました。ただ、あなたがプログラムに関して、 私以上に知識を有してる事は十分理解出来ますが、それを必要以上に 誇示したり、「あまりにひどい」「馬鹿の一つ覚え」「羹に懲りて膾を吹く」 と言う発言は、一社会人の会話として私には『冗長』に思えてなりません。
462 名前:457 mailto:sage [04/08/11 12:16] >>461 私の 「あまりにひどい」 発言に批判があるようで、反省。。 なかったことにしてくれ。私がわるかった。 私が一番気になったのは、ElseIf で 成立しかしない条件を 判定しているところなんですよ。 個人的には、2つ目の例のほうがわかりやすいと思ってる。 他の処理を足せるしね。 >>460 は 私じゃないので知りません。
463 名前:457 mailto:sage [04/08/11 12:37] >>458 >とにかく、自分の主観だけで他人のコードを「あまりにひどい」などと >言うのは良くないよ。 そこは今反省中。 もちろん、(たぶん)意図通り正しく動くプログラムであることは すばらしいことだと思ってます。 その範囲内での発言のつもりだったのですが、そんなことは 全然伝わるわけも無かったと反省中です。ごめんね。 じゃぁこうしよう。 If Me.GroupBox1.Enabled = True Then Me.GroupBox1.Enabled = False Else Me.GroupBox1.Enabled = True End If これなら、私もそんなに気持ち悪くない。 って言うのも 主観 か、残念。
464 名前:デフォルトの名無しさん [04/08/11 14:13] asp.netの質問ってここでもよいですか?
465 名前:デフォルトの名無しさん [04/08/11 15:06] なぜか悪者にされているが>457は良い指摘だと思ったのは俺だけじゃないよな
466 名前:デフォルトの名無しさん mailto:sage [04/08/11 15:16] if a = true then b = false else b = true end if より a = not b のほうが断然いいよな。 値を反転してるって一目瞭然だし。
467 名前:デフォルトの名無しさん mailto:sage [04/08/11 20:18] >458 の詭弁もあるが指摘自体はただしいだろ。 じっさい俺もひどいコードと思ったし。 >450 は教え方が悪いと言ってんじゃないの?
468 名前:デフォルトの名無しさん mailto:sage [04/08/11 21:13] 漏れなんかは VB (.Net) は、「動けば良し」的センスで使ってナンボ、みたいな先入観があるので、 457的突っ込みは思いつきもしなかった。まぁあれは確かに正論だし親切だと思うけど。 ↑こう書くと荒れにくい。 ↓こう書いてはいけない >>457 どうせVBなんて厨坊言語なんだから、酷いコードでもちゃんと動きゃそれでいいんだよ。
469 名前:デフォルトの名無しさん mailto:sage [04/08/11 23:21] マウスカーソルを乗せると浮き上がって、 押すと凹むツールバーのようなものってVBでは出来ないのでしょうか? 例えばLive2chのツールバーや、Winnyの「ノード情報」等で使われているものです。 C++やDelphiで作られているようですが・・
470 名前:デフォルトの名無しさん mailto:sage [04/08/12 00:43] >>469 ToolBar.Appearance プロパティをFlatにすればできると思うけど・・・。
471 名前:デフォルトの名無しさん mailto:sage [04/08/12 03:24] >>470 ありがとう、出来そうです。
472 名前:デフォルトの名無しさん mailto:sage [04/08/12 16:21] >>468 このスレはそういうレベルなのか? VBってバカにされがちだけど結構ちゃんとできてる。 醜いコードでもとりあえず動くものを作るのは重要だけど それで終わらせるのも勿体無いと思う。 「こういう処理は こう書くときれい」とかも共有して行こうよ。
473 名前:デフォルトの名無しさん [04/08/12 18:15] テキストボックスに商品の値段を入力したときに、数値に3桁区切りの","を付けたいのですが 入力したとたんに桁区切りをする方法というのはあるのでしょうか? 別のフォームで入力して、表示する際に桁区切りにするのは出来たのですが、入力したそのフ ォームの中で桁区切りにする方法というのがどうしても判りません。
474 名前:デフォルトの名無しさん mailto:sage [04/08/12 18:37] >>473 人間はエスパーじゃないことを忘れないようにしよう。 「入力したとたんに」とは具体的にどういうこと? ひょっとして人に質問している自分自身が何がやりたいのか分ってないとか? (3n+1)桁の数字のキーが押されたタイミングで、ということ? あるいは、エンターキーが押されたタイミング? それとも、他のコントロールにフォーカスが移ったとき? 一番最初のなら、そんな腐れUIは考え直すべきだと思う。 後の2つなら、単にそういうコード書くだけだと思うけど。
475 名前:デフォルトの名無しさん mailto:sage [04/08/12 19:06] >>473 ひょっっっっとして、 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, \ ByVal e As System.EventArgs) Handles TextBox1.TextChanged というイベントメソッド名が解らん、とかそーいうハナシか?
476 名前:デフォルトの名無しさん [04/08/12 19:14] >>466 b = not a
477 名前:デフォルトの名無しさん mailto:sage [04/08/12 19:51] Vd:J/A>Dxqr-RJ"~{Ro*
478 名前:コピペ [04/08/12 20:02] ファイル切り貼り処理を行うに当たって、既に同じ名前のファイルがあるとエラーになってしまいます。 その場合は上書きで処理したいのですが、どう書けばいいでしょうか? 現在以下のようなコードで切り貼り処理をしています。 'strOKU_FILE = 切取側ファイルパス 'strUKE_FILE = 貼付側ファイルパス Set FsoFile = fso.GetFile(strOKU_FILE) FsoFile.Move (strUKE_FILE)
479 名前:デフォルトの名無しさん mailto:sage [04/08/12 21:05] >>478 そんなもんここにレスしている間に調べがつくだろ。 横着野郎に今日を生きる資格はない。 こういう奴の書くコードってどっかのサンプルのツギハギなんだろうなきっと。 まあ、ヒントだけだすと、そんなことにわざわざFSOなんぞ使うな、 VBネイティブの機能を調べろ、ってことだな。
480 名前:デフォルトの名無しさん [04/08/12 21:38] >>479 あんた、やさしいな。
481 名前:デフォルトの名無しさん [04/08/12 22:13] >>479 名前欄・・・
482 名前:デフォルトの名無しさん mailto:sage [04/08/12 22:26] VBは確かに楽な言語だな。 VBで用意されているコンポーネントを使う分にはとても楽でいい。 ちょっと変な事を客から要求されるとかなり大変になるけど。 でも、VBに溺れたPGは最悪だな。 もうVB以外全然できない。 入門としてVBをやるのはいいが、そこからステップアップする気概が欲しいね。
483 名前:デフォルトの名無しさん mailto:sage [04/08/12 23:02] >>473 電卓みたいに、入力できるのを最下桁に固定すると 簡単になるじょ。
484 名前:デフォルトの名無しさん mailto:sage [04/08/12 23:03] >>482 .NET使ったこと無いだろ(w
485 名前:デフォルトの名無しさん mailto:sage [04/08/12 23:07] >484 残念、逆。 .NETでVBに触れた。
486 名前:デフォルトの名無しさん [04/08/12 23:08] >>482 >入門としてVBをやるのはいいが、そこからステップアップする気概が欲しいね。 C言語のほうが使いやすい奴がVBはじめるのはステップダウンですか?
487 名前:デフォルトの名無しさん mailto:sage [04/08/12 23:13] >>485 そっか・・・ 貴殿はVB6を見ると卒倒するんだろうな・・・
488 名前:デフォルトの名無しさん mailto:sage [04/08/12 23:20] >486 そうは言わないよ。 VBだって優れた言語だ。 ただ、VBしかやっていないでいると、計算機の本質を考えずにプログラミングできてしまう。 それは>482で言った「ちょっと変な事」を実現するための想像力の欠如に繋がる。 結果として作られたレールの上しか走れないPGになる。 それはクリエイターとしては大きすぎる痛手だ。 >487 色んな言語やってるから大丈夫だと思う。 自分で設計するならオブジェクト指向なしに戻りたくはないが。
489 名前:デフォルトの名無しさん mailto:sage [04/08/12 23:30] >>488 計算機の本質じゃなくて、Windowsプログラミングの本質でしょ。 何が本質かは主観の問題だろうけど、 SDKプログラミングだって「作られたレールの上」を走っていることに違いはない。
490 名前:デフォルトの名無しさん mailto:sage [04/08/12 23:49] 結局自慢話か( ´,_ゝ`)
491 名前:デフォルトの名無しさん mailto:sage [04/08/12 23:51] 「VBでアプリを作るのは非常に簡単。VBで『マトモな』アプリを組むのは非常に難しい」 VB4の頃からウチの会社に伝わっている格調高き名言でつ。 ドトネトになってからは更に加速したヨカン。
492 名前:デフォルトの名無しさん mailto:sage [04/08/12 23:53] >>488 まあ、言ってる事は分かるんだけど、VB.NETに関しちゃ、 JavaでもC#でも似たようなもんじゃないかな。Cとかなら別だけど。 計算機の本質と言うか、単にプログラミングということ自体の理解が足りないかな。 ついでに… 最悪なのはVBしか出来ないプログラマではなくて、VBすらできないプログラマだ… ってか、VB.NETが「ちゃんと」使えるなら大丈夫なんだけどね。
493 名前:483 mailto:sage [04/08/13 00:04] ひまだとVB議論のスレになるのだ。 >>473 こんな感じでいかがなものかな? Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim v As Decimal If InStr("0123456789", e.KeyChar) > 0 Then v = Val(TextBox1.Text.Replace(",", "")) v = v * 10 + Val(e.KeyChar) TextBox1.Text = Format(v, "#,##0") TextBox1.SelectionStart = TextBox1.Text.Length End If e.Handled = True End Sub 若干手抜きかも知れないのでみんなで直してくれい。
494 名前:デフォルトの名無しさん mailto:sage [04/08/13 00:08] TextChangedだったかのイベントの方が良いと思うのだよ。
495 名前:483 mailto:sage [04/08/13 00:12] >>494 そうなの? 理由教えて。
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] データーグリッドを使って、データーを表示させた際に、グリッド右端をクリックすると 幅が自動で広がりますが、あれをプログラムでやらせることは出来るでしょうか?