前スレ
>>997 ありがとうございます。
やはり無理そうなので
>>994 のような処理に修正していこうと思います。
どうもありがとうございました。
DataGridViewで特定セルのみをコンボボックスにする件ですが、解決しました 前スレ959の例の場合、 With Me.DataGridView1 .ColumnCount = 2 End With With Me.DataGridView1.Rows .Add("名前", "山田太郎") .Add("性別", "男性") .Add("血液型", Nothing) .Add("生年月日", "1988/12/30") .Add("趣味", "ウインドサーフィン") End With Dim blood As New DataGridViewComboBoxCell Call blood.Items.AddRange(New String() {"A", "B", "O", "AB"}) Me.DataGridView1.Item(1, 2) = blood これで目的は達成できました。 一応報告まで。
7 :
デフォルトの名無しさん :2007/12/13(木) 13:22:36
ポイント単位でのラグランジュ関数での画像拡大プログラミングをおねがいします
前スレの989です。 解説ありがとうございました。 あのサンプルコードを参考にとりあえず、サーバとクライアントを作ってみたいと思います。 ありがとうございました。
お願いってどういういみだ?
御値買い
VB.NETでつくったDLLをCreateObjectで参照せずに動的にオブジェクト作りたい時ってどうすればいいんでしょうか? ちなみに2005です
Assembly.Load あとはCreateInstance
>>12 なるほど!
Reflection使って BindingFlags.CreateInstanceであるオブジェクト作ったり関数呼んだりするわけですね
てっきりASPの時の癖が抜けず CreateObjectで行けるもんだと思っていたのですが
こっちのほうがよさそうです!!
ってことは・・・CreateObjectはCOM以外には使えないという感じなのでしょうか?
後学の為にも知ってはおきたいものですが・・・
というかそもそも CreateObject は COM オブジェクトを作るもんだ まあ .NET でも COM にクラス公開できるけど
>>12 >>14 わざわざありがとうございます!
やっぱ使い分ける必要があると・・・
まぁ過去の資産使ったりしない限りCOMはありえないとおもいますし
.NETでCOM作るのも互換の為くらいしか安い頭では思いつかないのであまり使うことがなさそうな感じですね
あとはアドインとかがパっとおもいつきますか・・・
まぁ一回くらいは何かごとの時の為に練習でCOM作っておこうかな・・・
16 :
デフォルトの名無しさん :2007/12/14(金) 11:55:39
未来のないPG諸君、今日もITドカタでかぁ〜〜〜 ゲラゲラゲラゲラ〜〜〜〜〜〜〜〜
17 :
デフォルトの名無しさん :2007/12/14(金) 13:47:32
毎度お世話になります。 自作コントロールなどで、特定のプロパティをデザイナのプロパティウィンドウには表示させないようにしたいのですが、可能でしょうか? 環境はVB2005です。 どなたかご教示宜しくお願いします。
18 :
17 :2007/12/14(金) 14:03:04
自己解決しました。 プロパティウィンドウに出さない場合:Browsable(False) インテリセンスに出さない場合:EditorBrowsable(Never) これでうまくいきました。
19 :
デフォルトの名無しさん :2007/12/14(金) 16:36:56
質問なのですが、 ツリービューコントロール(チェックボックス表示)でデータを表示したいのですが、 大量にあるのでデータベースから読み込んで表示したいと思います。 それでそもそものデータベースからの取得の方法が分からないのでご教示いただければと思います。 「ツリービュー データベース DB」などで検索もかけたのですが求めているのが無くて・・・。 ASP.NETでの読込とかは発見したのですが、これはウェブとかで使う場合ですよね? 宜しくお願い致します。
20 :
デフォルトの名無しさん :2007/12/14(金) 17:07:43
データベースは何を使っている。 データベースから何を読み込んでどうツリービューに反映したい。 以上を答えてくれ。
21 :
デフォルトの名無しさん :2007/12/14(金) 17:39:20
>20 データはCSVを読込たいと思います。 データは 種類 種類2 説明 猫 シャム 高級 猫 とら しましま 犬 しば 日本 犬 シベリアン 外国 みたいな感じで 表示は レ 猫 Lレしゃむ Lレとら □ 犬 L□しば Lレシベリアン です。チェックを付けた項目の種類・種類2・説明を取得し、 テーブルを組んでワードへ貼り付けられるようなものを作成したいと思います。 データグリッド→データベース(この時はmdb)からチェックリスト作成というのは出来たのですが ツリービューの場合どうしたらいいのかわからなくなりました。 親ノードをチェックすると子もチェックが入る、折り畳みができるというところで ツリービューのチェックリストだと見た目もすっきりするのではと思ったのですが、 壁にぶつかった次第です・・・。
>>21 DB云々じゃなくて、ツリービューの知識仕入れればいいんじゃねーの?
データベースからの読み込みが分かりません。 読み込むのはCSVです。 ポ?
文系の人は新聞や雑誌の束でさえデータベースと言い放つ 俺ら情報系にしたらRDB以外はデータベースと認めないからなぁ
RDBしかデータベースと認めないってどんな情報系だよっ
そんな情報系です
pictureboxの画像の上にボタンを配置したいのですが、座標を画像と被らせると表示されません どうしたら表示順序の優劣を設定できるのでしょうか?
30 :
デフォルトの名無しさん :2007/12/15(土) 23:03:39
age
BringToFront
33 :
デフォルトの名無しさん :2007/12/16(日) 18:42:10
毎度お世話になります、質問させてください。 いくつかボタン等のコントロールを持つフォームがあり、それを継承したフォームを作成するとします。 この時、継承元フォームで各コントロールのModifiersプロパティをProtected Friend以上にすると、継承先のほうでコントロールのプロパティ等が自由に変更できて便利です。 ただこうすると、コントロールの表示位置やサイズまでもが自由に変更できてしまいます。 これをさせたくない場合、どのようにしたらよろしいでしょうか? Lockedプロパティがそのまま継承先でも引き継げればベストだったのですが、元の方でLocked = trueにしても、先の方ではFalseに戻ってしまうようです。
単純には無理じゃないの? 位置や場所だってプロイパティのひとつでそ。
そもそもコントロールのフィールドを外部に公開するのが間違いだろ 外に見せたいプロパティだけ自分のクラスに定義したプロパティを通して触らせるべき
ここはVBスレ
??
デフォルトでコントロールが外から参照可になっているのも 鬱陶しいのだけど、あれはデフォルトで不可にできないのかな
40 :
33 :2007/12/17(月) 09:24:56
>>34 例えばプロパティをShadowsで被せて丁度
>>18 にあるような方法を使えば隠すことはできます。
ただマウスで移動やサイズ変更を防ぐことができないのです。
で、Lockedが引き継げれば〜ということを書きました。
>>35 今回プロパティに絞って質問したけど、ModifiersプロパティをProtected Friend以上にすればコントロールをダブルクリックするだけでイベントハンドラも作成できて便利なのです。
要は継承先でもコントロールがWithEventsで扱えるってことね。
プロパティだけなら
>>35 の言う通りなんだけど、そこは言及しておけばよかった。
ところでProtected Friendなら"外部公開"にはならんでそ。外部の定義にもよるけど。
>>39 デフォルトだとコントロールはFriendで配置されるでしょ?
41 :
33 :2007/12/17(月) 09:31:56
例えばLocationChangedやSizeChangedイベントを拾ってデザインモード時のみその変更を不可にする、とか考えたけどコントロールが大量になると効率がわるい。 継承されたコントロールは必ずLockしろ!というのが一番手っ取り早いのかな(´・ω・`)。 ってかなんでLockedだけ引き継がれないのじゃ?
42 :
19 :2007/12/17(月) 11:56:32
>23 すみません、こちらでもう少し勉強してみます・・・ どうもありがとうございました。
43 :
デフォルトの名無しさん :2007/12/17(月) 14:29:28
質問です。 アンチエイリアスの掛かっていない画像をピクチャボックス等に表示させる場合、アンチエイリアスをかけて表示させることは可能でしょうか? 解かる方お願いします。
もっと具体的にどういう画像にどういう風にアンチエイリアスかけたいのか
画像は、白地に黒一色で書いた線画のような感じのものです。 斜線などがジャギジャギしているので、アンチエイリアスを掛けたいのであります。
それは関係ないだろ 自前で画像処理するしかないんじゃね
48 :
デフォルトの名無しさん :2007/12/17(月) 18:09:16
自分で処理はきびしそうですね!!! でもそれしかないでしょうね…。 ありがとうございます。
49 :
デフォルトの名無しさん :2007/12/17(月) 18:25:58
PGって本当に将来性のない仕事だね・・・orz 俺転職しよ
50 :
デフォルトの名無しさん :2007/12/17(月) 18:48:03
好きでやってるやつは楽しいから残る 楽しくない奴はとっとと別の職種にいったほうがいいぞ 将来性とか考えてる奴は特になw 俺なんかもう、毎日デスマみたいなもんだけど、楽しくてたまんないぞ 同期も多いが、結局上にあがるのは一部だ やめたいやつはとっととやめてくれw
51 :
デフォルトの名無しさん :2007/12/18(火) 06:53:33
開発環境 WindowsXPSP2 VB2005 上記の開発環境で開発してます。 下記のようにソースを書きますと、コンボボックスを選択してプルダウンしますと 中身が真っ黒になってしまいます。 解決方法をご存知の方はいらっしゃいますでしょうか? FormにDataGridViewを貼り付けて実行してください。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim DT As New DataTable("DB") Dim Col As New DataGridViewComboBoxColumn() With DT .Columns.Add("Display", GetType(String)) .Columns.Add("Value", GetType(Integer)) End With With Col .DataPropertyName = "DB" .DataSource = DT .ValueMember = "Value" .DisplayMember = "Display" .HeaderText = "Combo" End With With DataGridView1 .AllowUserToAddRows = False .MultiSelect = False .Columns.Add(Col) End With DataGridView1.Rows.Add() DataGridView1.Rows.Add() DataGridView1.Rows.Add() DataGridView1.Rows.Add() End Sub
52 :
51 :2007/12/18(火) 06:54:06
ソースの続き Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, _ ByVal e As DataGridViewEditingControlShowingEventArgs) _ Handles DataGridView1.EditingControlShowing Try If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then Dim DGV As DataGridView = CType(sender, DataGridView) Dim DGVCS As DataGridViewComboBoxCell = _ CType(DGV(DGV.CurrentCell.OwningColumn.Index, DGV.CurrentCell.OwningRow.Index), DataGridViewComboBoxCell) Dim iCnt As Integer Dim DT As New DataTable("DBTable") DT.Columns.Add("Display", GetType(String)) DT.Columns.Add("Value", GetType(Integer)) 'データテーブルの作成 For iCnt = 0 To 5 DT.Rows.Add(CType(iCnt, String), iCnt) Next 'データソースを入れ替えて表示する。 DGVCS.DataSource = DT End If Catch oExcept As Exception '例外が発生した時の処理 MessageBox.Show(oExcept.ToString, "例外発生") End Try End Sub End Class
53 :
デフォルトの名無しさん :2007/12/18(火) 09:29:16
EditingControlShowingの度にコンボボックスに値を入れているのはなんでなんだぜ? なんか意図あるの? Form1_Loadのほうで、 With DT .Columns.Add("Display", GetType(String)) .Columns.Add("Value", GetType(Integer)) End With の後ろにでも Dim iCnt As Integer For iCnt = 0 To 5 DT.Rows.Add(CType(iCnt, String), iCnt) Next を入れてやればEditingControlShowingの方の処理はいらないと思う。
54 :
デフォルトの名無しさん :2007/12/18(火) 09:43:03
もし、動的にコンボの中身を変える必要があるのなら 'データソースを入れ替えて表示する。 DGVCS.DataSource = DT の後に DGV.RefreshEdit() これでうまくいく。
>>53 説明不足ですいません。
54さんが言ってるように動的に数値を入れ替えてるんです。
レスありがとうございます。
>>54 うまくいきました〜〜〜
ありがとうございます!
4日以上悩んでたことが、ここで聞いて3時間+睡眠で解決するだなんて、
ほんとにすばらしい!!
ありがとうございました。
… いや、よかったな…
・・・まぁよかったな・・・
>4日以上悩んでた 全SEが引いた でもまぁ… 解決して…よかったな…うん…
>>40 > デフォルトだとコントロールはFriendで配置されるでしょ?
Friend だと他のフォームからも参照できて気持ち悪くない?
設計云々は別にしても、コード書いてるときに候補で余計なコントロールが見えるのが
煩わしかったりしないかな。
VB2005です ある文字列からカナや英数字だけを特定して 取り出すメソッドか関数は無いでしょうか やりたいことは全角アルファベット、全角英数字、全角カナを含む文字列のうち、 アルファベットと英数字だけをStrConvで半角に変換したいのです
正規表現
62 :
デフォルトの名無しさん :2007/12/19(水) 09:36:29
63 :
40 :2007/12/19(水) 09:48:40
>>59 ああ、参照可能なだけで気持ち悪いってことか。
VSのデフォはPrivateらしいけど、VBに限ってFriendみたいだね。
VBのデフォもPrivateにする方法は今のところなさそう(軽くしか調べていないけど)
コントロール全部まとめて選択してModifiers=Privateにするしかないかもね。
64 :
デフォルトの名無しさん :2007/12/19(水) 17:34:10
PGに明日はない、4−50代に気付いておまえらあぼ〜んだ 合掌
65 :
デフォルトの名無しさん :2007/12/19(水) 17:39:42
4-50代でPGから昇格できてないんだったらそれは問題wwww ウチの会社にも数人いるけどさww なに、君は自身がないのかね?
66 :
55 :2007/12/19(水) 19:59:04
>>56-58 いやぁ、悩んでた理由というかいいわけは。。。
VB6.0からVB2005に環境を変えたからってことにさせてください。
まだVB2005で一本も組み上げてもないんで、
経験値やら、なんやら足りないのはわかってます。
でも、自分も唖然としたOTL
VB2005で、CPU使用率等を表示するプリグラムを作成したのですが、 このプログラムを壁紙と一体化したかのような使い方をしたく、 フォームをマウスポインター等が無視するようには出来ないでしょうか。 例えばフォームの下にアイコンがあった場合でも、フォームをスルーしてアイコンをクリック出来る といったような 初めてプログラムを作成したので、とても低レベルな質問ですが、 ご教示頂けますでしょうか。
そんなとこ噛みつかんでも('Α`)
2005でDirectSoundを使用したいのですが 川田氏のDirectSound活用モジュールは6.0用なので使用できませんでした。 2005用モジュールはありませんでしょうか? お願いいたします。
AudioVideoPlaybackじゃだめなの?
VB2005でDataGridViewに表示させているデータを そのまま同じ内容で別フォームのDataGridViewに表示させたい のですが、プログラムではどう書けばいいのでしょうか?
mixiニュース VB2008 アップデート中不具合 「恋人のケータイ盗み見」調査 携帯で似顔絵作成、14億以上 KDDI社長、iPhoneに慎重姿勢 1ペタバイト超えるストレージ 「Firefox 3」のβ2をリリース ぶったまげ? Winのタッチ機能 もっと読む
75 :
デフォルトの名無しさん :2007/12/20(木) 09:28:41
>>66 VB6あがりなのはソースの書き方から解かる。
がんばって7以降のVBにも慣れてね!
そして教える側としてこの板に帰ってくるのだ。
76 :
デフォルトの名無しさん :2007/12/20(木) 09:30:51
>>72 DataGridView1.DataSource = DataGridView2.DataSource
ただこれだと片方の内容変えたら、もう片方も変わっちゃうかな?
それが望むカタチではない場合は、適当にCloneでも作ればok
77 :
55 :2007/12/20(木) 10:05:20
>>75 ありがとうございます!!
このスレで他の方にレス付けれるよう勉強してきます!
>>74 世間一般にはVB=ウィルスバスターなのかね。
たまに検索しててVB2007とか出てきてビックリすることがあるw
そんなのいつ出てたの!?みたいなw
SDカード固有の識別番号ってどうやったら取得できますか? ググったんだけど見つからなかったんで・・・ 固定ディスクやCD−ROM、USBメモリは Scripting.FileSystemObjectを使って取得できたんだけど SDカードは取得できなかったので
>>78 あああ
今の今までマジでVisualBasic2008が出てたのかふーんと思ってたよ・・・orz
なんでmixiにそんなニュースが載ってるのかちょっと違和感があったが・・・
質問です。 If sender.Equals(Me.textbox1) Then Call MessageBox.Show("textbox1") ElseIf sender.Equals(Me.textbox2) Then Call MessageBox.Show("textbox2") Else Call MessageBox.Show("textbox3") End If このコードを Select Case sender End Select の表現で書きたいときはどう書けば良いですか? よろしくおねがいします。
>>81 ベタには出来ないし、そんなくだらないことに下手な工夫を凝らして
Select...Caseつかって分岐しても読みにくい糞コードになるだけ。
素直にIf....ElseIf使うべし。
というか、参照型の変数が参照しているものが同一かどうかを検査するのは
Is演算子を使うんだよ。つまり、
If sender Is Textbox1 Then....のように書く。
みんなもう2008に切り替えたんですか?
VB2008はアップデート中に不具合が出るそうだしなぁ
VBのラムダ式はAction型が使えないの? Dim Lambda As Action(Of Integer) = Function(i) Console.WriteLine(i)
オフラインインスコイメージをDVDに焼いてインスコすると MSDNのインスコ中に10分ぐらい引っかかった 放置して様子見てたらまた動き出したけどなんだったんだ? アレが不具合か?
.NETのバージョンもIDEのバージョンも言語とは直接関係ないな VB7/8はそんなに変わらんから気にしないでいいよ もう9が来てるんだし
92 :
60 :2007/12/21(金) 05:01:05
>>61 Public Sub hoge()
Dim regex as New Regex(〜省略〜)
Do Until reader.EndOfStream
〜省略〜
field = regex.Replace(reader.ReadLine, New MatchEvaluator(AddressOf RegexMatchEvaluator)).Split(",")
〜かなり省略〜
Loop
End Sub
Private Function RegexMatchEvaluator(ByVal m As Match)
Return StrConv(m.Value, VbStrConv.Narrow)
End Function
一応やりたい処理はできたんですが、こんなコードで良いんですかね?
なにしろ門外漢なもんで・・・
それにしても2008ってデバッグがやたら重くないですか?
93 :
デフォルトの名無しさん :2007/12/21(金) 09:59:56
>>84 >>88 釣りだと思うが、不具合がでるっていうソースはどこだ?
本当にでるなら、検討せねばならん
釣りだと思ってる人に教える気にはなれん。 調べろ。
95 :
デフォルトの名無しさん :2007/12/21(金) 11:18:51
調べてソースがないから釣りなのか?って聞いてるんだろ。
まさかソースは
>>74 だとかいわないよな
96 :
デフォルトの名無しさん :2007/12/21(金) 11:24:03
じゃあ、俺が100ゲット
101 :
デフォルトの名無しさん :2007/12/21(金) 14:55:19
別のウィンドウを開いていてもキーダウンのイベントを拾えるようにしたいんですが どうしたらよいですか?
102 :
デフォルトの名無しさん :2007/12/21(金) 15:14:03
↑訂正 別のウィンドウにフォーカスしていても
103 :
デフォルトの名無しさん :2007/12/21(金) 15:45:05
どのウィンドウにもキーダウンのイベントハンドラを書く。 そうじゃないよね、聞きたいことは。 GetKeyStateを監視する、とか。
104 :
70 :2007/12/21(金) 17:22:12
>>71 さん
ありがとうございました
こんな便利な物があったなんて…
勉強します
105 :
デフォルトの名無しさん :2007/12/22(土) 23:40:03
age?
すげぇ・・・こっちはまともに攻めてくんか
誤爆失礼orz
108 :
デフォルトの名無しさん :2007/12/23(日) 22:35:03
VBの人に質問です。 VBやってみて、C++/C#とどちらがいいですか? VBでdirectXなどを使えますか?
VBの人ですがC#のがすきです
110 :
デフォルトの名無しさん :2007/12/23(日) 23:33:44
質問を。 MSNメッセンジャーをアクティブ状態にしておき、メッセージを受信した際それを読み込み、 メッセージ内にある特定のコマンドを別のアプリケーションへ送るというものを作ろうとしています。 この場合、どのように作ればいいか、どなたかサンプルコードもしくは作り方等、教えていただけませんか? どなたかよろしくお願いいたします。 自分で作ってみているのですが、そのアプリケーションを起動した後、 メッセンジャーをアクティブにしてメッセージを受け取った時に受信したメッセージを取り込む・・・のあたりがうまくいきません。 クリップボードを利用してみようかと思ってるんですが・・・。
初心者ですが質問です Dim btn As button = sender というコードを書いたのですが、 senderはオブジェクト型で、渡すには良くない型だとうかがいました。 senderを他の型にして受け渡す方法はあるのでしょうか? 教えてくださると幸いです。
.NETなんてモジュール単位で言語変えられるんじゃないの?
それが何か?
115 :
デフォルトの名無しさん :2007/12/24(月) 11:00:34
超初心者ですが質問します。(使用してるのはVB2005) 1メモ帳をForm起動時に読み込む 2ボタンを押すとtextbox&redioboxの内容をメモ帳に保存する この二つをできるようにしたいのですがわかりません ネットで探しても、近いものがなかったので教えてもらえないでしょうか?
>>115 >1メモ帳をForm起動時に読み込む
どゆ意味?
メモ帳起動させるの?それとも、保存してあるテキストファイルを読み込むの?
>>115 ひとまずはスニペットをお勧めする
ファイルストリームとか使うのはその後だ
てっとり早く読みこみたいんだろ?
>>108 directXつかうならC++のがいいかもな。
121 :
デフォルトの名無しさん :2007/12/24(月) 17:07:37
当たり前だが、VB.net2003ってデュアルコアに対応してるよな。
>>121 OSが対応してるからその上の層はほぼ無関係
>>121 どういう意味だよそれ。
意味がわからん。
VB2003って何のこと?
開発ツールのこと言ってるの?それともそれを使って作られたアプリのこと?
デュアルコアに対応したアプリなんて存在するの?w
わざとアホっぽいキャラ演じてるの?
>>123 >デュアルコアに対応したアプリなんて存在するの?w
まあ、シングルスレッドのプログラムもデュアルコアCPUでは当然動くけど…、
デュアルコアの性能を引き出すって意味で言えばマルチスレッドのプログラムってことになるのかな…。
よくその手の話を聞くけど、マルチスレッドとマルチコアってあまり(いや本当は全然)関係がないと思うよ。
128 :
デフォルトの名無しさん :2007/12/24(月) 18:00:34
負荷をかけても1コアしか使わないってことは無いよね。
詳しくって言われてもOSの構造とか俺も素人だしw でも普通に考えれば、コアが2つや4つになったところで コンテクストの切り替え無しにスレッドやプロセスが動くわけじゃないんだから。 CPUのMIPS以上の性能向上が期待できるとしたら、コンテクストの切り替えによる ロスが減った場合だけじゃないの?
お前は何を言ってる? 何のためのマルチコアだよw
マルチ演算ユニットみたいなのと勘違いしてるんか?
>>130 なんか複数のコアで同時にコード(スレッド?)が実行されるから早くなるんだ、
みたいな素朴な考えで物を言ってないか?
当たり前だがWindowsのようなマルチタスクOSはそんな素朴な構造になってないよ。
何が言いたいかというと、フリースレッド使ってるからって 同じMIPSならシングルコアでもマルチコアでもパフォーマンスは大差ないはずでしょってこと。
全体でみて大枠でそうだからパフォーマンスが向上するといって それほど差し支えがあるとは思わんがな。 少なくともマルチコアの性能発揮とスレッドは関係ない よりは正しいと思うが。
>>133 悪いが具体的に何が言いたいのか分からない。
MIPS値って具体的にどういう意味で言ってる?
俺個人がやったことじゃないんだけど、 素数を求めるプログラムをマルチスレッドで書いて、 それをシングルコアのPCとデュアルコアのPCで走らせてかかった時間を比べたら デュアルコアのPCの方はシングルコアのPCでの結果に比べてかかった時間が1/2になったそうな。 ソースは理系のためのVisual Basic2005実践入門 デュアルコア積んだPC持ってねえし、自分で確かめてないからなんともいえないけど。
OSのスケジューラがどの程度賢いのか知らんが、 そりゃそれなりにそういう結果になるだろ。 ってかなるようにコーディングする。
>>136 それはさあ、まず同じ処理をフリースレッドを使うコードと使わないコードで書いて、
その二つの処理時間の比がシングルコアの環境とマルチコアの環境で変わるかを
見ないと意味ないんじゃねえの?
>>138 そうですね…。
今度暇な時に個人的に比べてみようと思います。
>>132 何が言いたいのか分からんな。
そんな単純な構造じゃないのは分かるが
だからマルチコアだからってパフォーマンスは向上しない
とでも言ってるの?
一切向上しないならOSのスケジューラが馬鹿すぎるとしか言いようがないが。
>>138 マルチスレッド活用できるコードになってなかったら
シングルコアの性能しか出ないに決まっとろうが。
少なくとも現状のOSの実行方式じゃ。
そこを自動化出来るようになるのはいつだろうな。 少なくとも現状のPCレベルじゃコード側の助けが必須だな。
>>141 何を突っかかってるのか意味がわかりませんが。。
人の言ってることと理解してレスしてる?
>>138 フリースレッドのコード書いたら
シングルコアでもマルチコアレベルで性能向上するって
あり得ると思うのか?
もちろんここではCPU負荷メインの処理って前提だが。
ああひょっとしてそういう事を言おうとしてたのか?
そうは読みとれなかったが…
145 :
デフォルトの名無しさん :2007/12/24(月) 18:41:23
だれも教えてくれないのでもう一度質問します。 VB2005以上ででdirectXでゲームは作れるのでしょうか? 遅いとか早いとかは抜きで。
最近ようやくVB6からVB.NETに移ってきたけどこりゃ便利だね。 コードからメニューを自由にデザインできる様になってるのが特に良い!!
性能評価では正しく比較する必要があるが、
>>138 はそれ以前にマルチコアでのパフォーマンス向上を
はなから否定してるように見えるからな。
>>145 作れる。DirectXのSDKインスコしないと無理なのはもちろんだけど。
(他言語の場合でも必要)
勝手に全コア合計の処理能力が同じ場合という あり得ない前提を持ち出してるように見える。 それ以外じゃ意味分からんから。
>>144 も
>>147 もすぐに話の文脈を忘れる鶏頭だろ
>>121 あたりから順を追って読み返してみろよ。
まあ鶏頭クンは読んでるはなから忘れるかもしれんがw
あのねえ、マルチコア環境はシングルコア環境比でマルチスレッドのコードの
実行効率が向上するのかを問題にしてるんだよ。
だからそれを確かめるには
>>138 のような実証実験をする必要があるだろうよ。
確認するには必要だがな。 しかし、素数計算なんて明らかにCPUオンリーとしか思えない処理では そんなことを持ち出すまでもなく シングルコアのマルチスレッドで性能が向上する訳がない。 少なくともマルチコアと比較になるレベルではあり得ない。 そんなの書くまでもなく明らかだと思うが。
鶏頭とかどうでもいいが、なんでそんなにマルチコアでの性能向上を否定してるの? ああ、否定してたやつと別人ならすまんな。
>>153 なんかもう病的に馬鹿だなw
だれもそんなこと言ってないってw
>>154 あんたはあんたで馬鹿だなw
決して難しくない日本語で簡潔に書いてるんだからちゃんと理解しろよ。
今問題にしてるのは、
・マルチコア環境においては、
・シングルコア環境比で、
・マルチスレッドのコードの実行効率が高いのか
だよ。
そりゃ一般的には最新のマルチコアのCPUは旧世代のCPUより処理能力が高いに決まってるジャンw
誰もそんな話はしてないんだよ。
で、それが高くならないと主張してるのか?
158 :
デフォルトの名無しさん :2007/12/24(月) 19:05:52
>>148 ありがとう、これでおいらもVBユーザーに仲間入りする気になったよ。
そう、そういうこと。 きっちり実証したわけじゃないけど、高くなるとしたらそのメカニズムがよくわからないよ。
>>156 後ろの文が意味分からん。
マルチコアでマルチスレッドでの処理能力が向上するのは
なんていうか、当たり前すぎるっていうか、最初からそれも目的にした技術なんだから。
改めて実験するまでもなく、実証例はいくらでもあるだろ?
よく分からんな、マルチスレッドの処理なら マルチコア上では複数スレッドが本当に同時に処理できるんだから トータルの処理能力が向上するのは当たり前としか。 どこに疑問を感じてるんだ??
>>160 解説記事はたことあるけど実証例は見たことないな。
その解説とやらも、
>>132 式の、書いてる奴がマルチタスクのしくみを
根本的にわかってないとしか思えないようなのばっかり
>>163 だからそれが素朴すぎるって言うんだよw
コアがスレッドに専属するようなモデルを無意識で想定してるんだろうけど
そんなモデルは全然間違ってるよ。
だからさ、コアがスレッドに直結してないにしても、 ある瞬間ではおおよそそうなってるだろうがよ。 だから大枠ではそうなってるってわざわざ書いたのに。 お前はスレッドとコアが直結してないからって、 いきなりマルチコアでも性能は向上しないって結論付けてるのか? 直結してないからって複数スレッドが同時に実行されないってことにはならんだろ?
>>166 物事をゼロから考える訓練が出来てない人なのかなあ。。
なにか「同時」ということに意味があるように思ってるようだが、
物理的に同時だったら効率が上がるの?何故?
結論から言えばそんなことはないんだよ。
最初から言ってるように、コンテクストの切り替えによるロスを減らせるかどうか、
それだけが問題なの。
そんなの大して(もちろんゼロではない)減るわけないじゃん。
コアが二倍や四倍になった程度で。
HyperThreadingと混同しているように見える
OS上でCPUを必要としてるスレッドがあれば、 OSは優先度に従ってスレッドにCPUを割り当てる。 複数スレッドがあれば基本的にはそれぞれに空いてるCPUを割り当てる。 マルチコアでは割り当てられるプロセッサが複数あるから 複数スレッドがあれば基本的には複数スレッドがそれぞれのコアで 同時に実行される。 スレッドへのCPUの割り当ては短時間で何度も切り替えられるが、 全体の時間で見たら、ほぼコア数のスレッドが同時処理される。 そういうコードになってたら、だが。 これ以上何が気に入らん?
なんかひとつのスレッドの処理速度が上がるわけないって意味で書いてるみたいだな。 んなのは当たり前だが、マルチコアとマルチスレッドの話で そんな話をしだすとは予想外すぎて分からんよ。 っていうか、そんなことは分かってる前提で、全体の処理能力を向上させりために マルチスレッドを使うって話なのは、もう最初から大前提だろ。 まあそういう話だと受け取っても、マルチスレッド化で処理時間が半分ってのが 納得いかないってはっきり言ってるから、そもそもなにも分かってない気がするが。
8コアぐらいあれば、ThreadAffinityを設定すれば専属コアにならね?w
>>167 は何が言いたいのかな…
なんでコンテキスト切り替えだけが問題って話になってんだ?
コンテキスト切り替えの効率が重要なのは分かるが、
複数スレッドが同時に処理できるってことが最重要じゃないのどう考えても。
シングルコアじゃひとつのスレッドしか物理的に同時実行できない。
マルチコアならコア数分同時実行できる。
複数スレッドのコードならコア数分のスレッドはコンテキスト切り替えなしで実行出来るし
同時実行してるんだからこなしてる処理量もコア数倍になってる。
まあこれは理想的な場合だが、大枠ではこうだ。
一体これ以上何が疑問なんだ。
専属コアじゃなくて、コア専属かなあどっちかっていうとw
174 :
デフォルトの名無しさん :2007/12/24(月) 20:02:19
どなたか
>>110 の質問、よろしくお願いいたします。
ちょっと上のでは曖昧すぎるかもしれませんので細かく言うと、
VB上でWindowsのショートカットコマンド、CTRL+AやCTRL+Cを使うにはどうすればいいのでしょうか?
>>174 sendkeys使えばいいじゃん。
それで満足できないならWin32APIで。
なんか最近他人をさんざん馬鹿扱いしてだんだん馬鹿としか書かなくなって そのまま消えてしまう奴をよく見るようになった気がする…
177 :
デフォルトの名無しさん :2007/12/24(月) 20:16:01
>>175 それでいけるんですか・・・キー単体しか認識しないものだと思ってましたorz
結局何だったんですか?
クリスマスだというのにお前らはこんなスレに齧りついて、と言う涙なしでは語れない話
180 :
デフォルトの名無しさん :2007/12/24(月) 21:51:21
このあと秋葉原から生中継
>>149 そのトップに出てくる本、糞だったなぁ。
2002のコードを2005にアップグレードしただけだったし。
182 :
デフォルトの名無しさん :2007/12/24(月) 23:46:28
前前スレのTry-Catch論争と同じ臭いがするぞ、ここはw
最近、最初に、 こんな奴がプログラム云々 頭悪いみたいだね云々 知能が低い云々 鶏頭云々 病的云々 馬鹿云々 こういうこと書く奴がアホだったっつう マンガみたいな展開大杉
>>183 自分の言葉を自分に適用できない。
これ馬鹿の顕著な特徴だから徹底的に頭に叩き込んだ方がいいよ。
まあそれができないから「馬鹿」なんだろうけどさw
というか、馬鹿と呼ばれて頭にくるのはまあいいとして、 しかし、じゃあそう呼ばれた人間は実際馬鹿なこと言ってないのかよ。 それも繰り返し注意を促された後で
だれ?
いわれたやつがどうこうとか関係なく 言ってるやつがアホだったっことには変わりないな。
基本的にスレッドはソフトウェアレベルの話で,コア数はハードウェアレベルの(上層の)話. リソースの競合とかデッドロックとかマルチタスク処理によるコンテキストの切り替えとかアトミック操作とか, 実行時には様々な障害が発生するので,その辺をOSが色々やってくれる. そんなわけで単純に「2つ処理するハードウェアつけたら2倍になるぉ(^ω^」なんて誰にもいえなくて, そんなこと言ってたらそれはバカ丸出し. OSを解さないで,自力でソフトウェアをチューニングしてやっとかそこそこハードウェアの性能を引き出せるわけだから, 安っちぃコンパイラで(しかも仮想マシン)吐き出したコードを実行して,シングルコアとマルチコアでユーザが体感できるような性能差が出たらラッキーくらい. それよかハードディスクの性能をよくするとか,マウスの精度を上げるとか,描画を早くするとかに専念した方がいいじゃろな. アプリケーションプログラマからすると.
>>191 こいつ恣意的に話しずらしてるよな明らかに。
笑わすなっつの。
無条件に2倍になるとか、だれもそんなこと言ってないし。
>OSを解さないで,自力でソフトウェアをチューニングしてやっとかそこそこハードウェアの性能を引き出せるわけだから, >安っちぃコンパイラで(しかも仮想マシン)吐き出したコードを実行して,シングルコアとマルチコアでユーザが体感できるような性能差が出たらラッキーくらい. あふぉか。
>>191 お前ほんとは何もわかってないだろ。
文章の節々から怪しさがにじみ出てるぞ。
これ以上議論するならコテかトリップつけてくれw わかりにくいったらありゃしない。
>>158 これからプログラミングやるならVB.NETからやるのはやめとけ
.NETならVC#、ネイティブならVC++を勧める
>>191 なので、
マルチコアマシンでも、マルチスレッド化してもパフォーマンスはアップしません。
アップする理由がありません。
アップしてる記事とかあるけど、何にも理解してないやつがでたらめ書いてるんだよ。
って言いたかったってことでおk?
違うでしょ
結局マルチスレッドでもマルチコアの性能を引き出すことはできないって言ってるの? それとも話をずらして誤魔化してるだけなの?
いいえ いいえ
結局何だったの? ところでパラレルライブラリっていつ出るの?
DataGridViewで変更のあった行はRowStateを見ればわかるけど 変更のあった列はどうやって取得するのでしょうか
こんな日になんですが、よろしければお付き合いください。 現在、Office2007のアドインをVB2008で開発しようとしています。 実装したい機能としては、従来のメニュバーと、削除されてしまった「スキャナまたはカメラから」の図の挿入です。 メニューバーのほうは方法がわかり、めどが立ったのですが、「スキャナまたはカメラから」のほうが難航しています。 この機能自体はクリップオーガナイザ(MSTORE.exe)に実装されているので、 ・そのダイアログをWord、PowerPointなどのOfficeアプリケーションから一発で呼び出す ・実行結果をオーガナイザのコレクションに追加して、そのファイルをOffice側に張り付ける ということができれば理想的です。 このようなことは可能でしょうか? VSTOのドキュメントとは格闘したのですが、Officeアプリケーション自体からこの機能がなくなっているせいか、2007では実装方法がわかりませんでした。
XMLの要素や属性を読みに行く際、LINQ to XMLで読み込んでから型変換するのと、XmlReaderで型指定して読み込むのとではどちらのパフォーマンスが良いでしょうか。
>>203 Win32API使って自分でやった方が早くね?
208 :
デフォルトの名無しさん :2007/12/25(火) 15:25:05
可愛そうなPG諸君 君たちに未来はないのだよ 職種変えなさい (マジ
209 :
デフォルトの名無しさん :2007/12/25(火) 15:31:39
質問させてください。 現在、Labelコントロールを継承したコントロールを作成しています。 その継承コントロールにて、AutoSizeプロパティをインスタンス生成時にFalseにするようにしているのですが、 フォームに貼り付けた時点でAutoSize=trueがフォームのInitializeComponentメソッドに自動的に書かれてしまい、意味がありませんでした。 デフォルトでAutoSize=falseにしたい場合は、どのようにすればよろしいでしょうか? どなたかご教示宜しくお願いします。
210 :
209 :2007/12/25(火) 15:56:35
調べてみたところ、LabelはデフォルトでAutoSize=Falseなんですね。 要はInitializeComponentでAutoSize=Trueが自動で書かれてしまわないようにできれば… 無理でしょうか(´・ω・`)
211 :
デフォルトの名無しさん :2007/12/25(火) 16:30:34
可愛そうなPG諸君 君たちに未来はないのだよ 職種変えなさい (マジ
212 :
デフォルトの名無しさん :2007/12/25(火) 16:30:43
可愛そうなPG諸君 君たちに未来はないのだよ 職種変えなさい (マジ
>>209 フォームデザイナで「継承したクラスのAutoSizeプロパティ」がTrueになっているんでないかな?
>>209 あるあるw
とりあえずこれで解決できるみたいだよ。
完全に問題がないかどうかは確認してないが
Public Class LabelEx
Inherits Label
<DefaultValue(False)> _
Public Overrides Property AutoSize() As Boolean
Get
Return MyBase.AutoSize
End Get
Set(ByVal value As Boolean)
Static is1st As Boolean = True
If DesignMode AndAlso is1st Then
MyBase.AutoSize = False
is1st = False
Else
MyBase.AutoSize = value
End If
End Set
End Property
End Class
>>215 お前こそそれ知ってどうしたいんだよ。
しかし、なんで馬鹿ってえのはこう自分を棚上げして平気なんざんしょうかw
*Data*Gridで行に対しての処理は当たり前だけど、 列、ってのは想像が付かないからなー。 なんつーか、特異な要求の理由が知りたいってところ?
>>216 自分のことをよくぞ言ったもんだ
215じゃねーけど知ったところで意味ねーからだろーが
その変更された値を取得するには結局変更された行(=レコード)を取得しなきゃならんのだし
219 :
209 :2007/12/26(水) 10:17:17
>>214 できました(`・ω・´)!
強引な感はありますが、強引な方法でしか解決できそうにないですしねw
今のところ問題はないです。
220 :
デフォルトの名無しさん :2007/12/26(水) 13:04:04
すいません、わからないことができてしまったので質問です。 使用ソフトVB2005です。 わからないことは テキストボックスで入力した文字をボタン1を押すとtxtファイルに保存して、 ボタン2を押すとテキストボックスに呼び出すこと。(テキストボックスは複数) StremReder、StremWriterを使うことはわかって、保存まではたどり着きました。 ですが、呼び出しがわかりません。 どなたか、教えてもらえませんか?
221 :
デフォルトの名無しさん :2007/12/26(水) 13:11:52
222 :
デフォルトの名無しさん :2007/12/26(水) 13:43:34
>>221 どうもありがとうございます。
確かにできました。
ですが、1行で保存しているものを分割して表示しなければ
いけないので、すべてまとまって出てしまいます。
これは、どうすればいいかわかる方いましたら教えてください。
>>222 それは一行に全てまとめて保存していて,そのまま表示したってことでおk?
適当に分割すれば
224 :
デフォルトの名無しさん :2007/12/26(水) 13:58:18
>>223 分割・・・それもアリですが
こんな感じになって保存されてるのをtextboxに分けて入れたいんですよ。
a,s,df(textbox1.text,textbox2.text,textbox3.textという感じに保存)
分割可能でしょうか? ,は表示されません
>>224 「感じ」だけ言われてもなぁ
じゃあ
a,s,df(textbox1.txt, textbox2.txt, textbox3.txt という感じに分割)
すればいい
クリンゴン語でおk
227 :
デフォルトの名無しさん :2007/12/26(水) 14:20:01
>>225 わかりにくく書いて御免
訂正する
保存ボタンを押すとTextBox(複数)の内容を保存する
Dim abc As String
abc &= TextBox1.Text
abc &= ","
abc &= TextBox2.Text
abc &= ","
abc &= Textbox3.Text
保存すると
日本,中国,ロシア
これをTextBoxに戻すことをしたい
どうもすいません
splitで分割しろ
229 :
デフォルトの名無しさん :2007/12/26(水) 14:32:29
お!でけた。 ありがとう!
230 :
デフォルトの名無しさん :2007/12/26(水) 14:42:35
解決したから良かったけど、なんでこう目標だけを質問するのかねw こういう<前提>で処理をしており、次にこういう<手段>で<目標>したいです。 どうやったら<手段>はできますか? とか聞いてくれれば答えやすいのに。
231 :
デフォルトの名無しさん :2007/12/26(水) 15:04:15
おお!できた おまいらありがとう
そこまで説明できたら自分で解決出来そうだけどな。
ちょっと教えて ストリングビルダってどういう時に使うのがいいん? SQL組み立てる時にはいいんだろうけど、それ以外の用途ってあまり思い浮かばない 何よりindexofが無いのが致命的 結局ストリングの代わりに使えるようなもんじゃ無いってこと?
>>232 自分で解決できるのが一番だ。
>>230 みたいに考えて、それでも解からないなら質問すればいい。
思考ゼロで質問丸投げしてくるやつは成長しないぞ。
235 :
デフォルトの名無しさん :2007/12/26(水) 16:13:28
>>233 どぼんより引用
Stringクラスではなく、System.Text.StringBuilderクラスを使うことにより、文字列の置換や追加などの
処理をより高速に行うことができます。
例えば、Stringクラスで文字列の連結を行うと、文字列を連結するたびに新しいインスタンスを
作成するため、パフォーマンスが落ちますが、StringBuilderクラスでは、そのようなことがありません。
文字列の置換や追加などの処理を頻繁に行う時は、StringBuilderクラスを使うとよいでしょう。
逆に言えば文字列の置換や追加などの処理を頻繁に行わない時は、意識して使うこともないってこった。
>>233 100万回くらい文字列の連結をするループ作って
StringとStringBuilderを比較してみるといい
237 :
デフォルトの名無しさん :2007/12/26(水) 16:19:25
100万回てwww メモリたらんわwwww
>>235 その程度のもんなんだね
THX
いやまあそんなに違うもんなら、今までに書いたの全部書き直さなきゃいかんかと思て
何を読んでそんなに違うものだと思ったの? いや素朴な疑問。
100回程度で違いが出たら根本的なところで問題あるだろ絶対。
>>237 100万=1M
10文字くらいの連結なら最近のPCならなんら問題ない
UTF16だから×2 コピー時に両方いるから×1.5 最悪必要量の2倍確保されるから最悪の場合は×2 よって最悪6倍 ああもちろんこれは1文字ずつ足した場合だから さらに足していく文字数倍なw
ああそれでも最悪60M位だな。 過渡的に使うメモリはトータルでさらに倍か、それでもまあ120Mくらいか。
違うわ、トータルはそれ×100万だたw
違うw半分の100万ばいだから 30M×100万だ
最悪の場合は2倍じゃなくて1.5倍かな?俺ってあほだ
チラシの裏にでも書いてろ
ガベコレのことを忘れてはいけませんよ
誰も忘れてないと思うよ
単なる連結なんだから 100万回×1000万文字×2バイト÷2で 1000万Mだな、過渡的なものを含めたトータルで。 10Tか。 メモリ帯域ってどんくらいだっけ?
まあ1時間もあれば終わるんじゃない?知らんけどw
やってみるわ aを100万回連結してみる
253 :
252 :2007/12/26(水) 21:35:44
予想外に長いな…w とめたくなって来たぜ…w
254 :
デフォルトの名無しさん :2007/12/26(水) 21:42:02
すまん(´・ω・`)あまりにも長くてとめちまった。 代わりに20万回でやったわ String: 98297ミリ秒 StringBuilder: 16ミリ秒
255 :
デフォルトの名無しさん :2007/12/26(水) 21:48:43
上から順に 1万、2万、5万、10万回 String: 157ミリ秒 String: 562ミリ秒 String: 3875ミリ秒 String: 20766ミリ秒 StringBuilder: 0ミリ秒 StringBuilder: 0ミリ秒 StringBuilder: 0ミリ秒 StringBuilder: 0ミリ秒 StringBuilderのほう、10万回以下じゃ0ミリだぜ、、、
そういや .net か java か忘れたけど, コンパイラが文字列連結をコンパイルするとき, 3つまではString()のコンストラクタ使われて,それ以外だとゴニョゴニョするって記事をどこかで見たな
257 :
デフォルトの名無しさん :2007/12/26(水) 22:13:48
>ゴニョゴニョ そこが重要だろww
実際に試すとはチャレンジャーなw 純粋なメモリ転送よりは圧倒的に効率悪いだろうから、 10分の1の1文字ずつでも1時間はかからないかどうかってとこかな?
試した方が早いってことで試してみた 文字→数字 val>parse>>>>>>>>cint (valとparseはほとんど変わらないけどcintは10倍以上遅い) 数字→文字 tostring>cstr>format (formatがtostringの2倍程度) もっとも複雑な書式になってきたらどうか分からんけど
WindowsMobileのコード書くときもあるけど、 そういうのってStringBuilder積極的に使ったほうがいいんかなぁ・・・ 文字列連結なんかも、a = a & "a" みたいな感じでやってたりするし。 Strcat とか使いづらいしなぁ
MSのガイドラインをどっかで見たが、 5回以上連結する場合はStringBuilderの方が平均的にパフォーマンスが良くなるそうだ がまあボトルネックになってないなら気にすることもない
ループなど、連結数が予測できない場合や、 連結による追加を何度も繰り返す場合は使った方がいい。 単文での連結だけなら不要、例え数が多くても。
>>261 試してみた
4回まではストリングの方が早い
5-7回まではイーブン
8回以上はストリングビルダが早い
WebBrowserコントロールで表示中のソース取得するのはどういう方法がいいんだろう? 今は Me.WebBrowser1.DocumentText でやってるんだけど、これってサーバに 再読み込みに行くのではなくて現在表示してる内容のソースなんでしょうか?
冷たいんだなw
VB2005で質問です。 メモリ領域が確保されるのは(1)と(2)のどちらでしょうか? Dim int As Integer ・・・(1) int = 100 ・・・(2)
>>268 Sub Hohe ・・・ ここ
Dim int As Integer
int = 100
271 :
268 :2007/12/27(木) 19:47:00
ありがとうございます。よく分かりました。 宣言する位置、代入する位置は関係ないのですね。 見易い位置で宣言するようにしたいと思います。
Dim myObj As New MyObject はVB6とは意味が変わったから注意な。
273 :
268 :2007/12/28(金) 09:46:35
はい。察しの通りVB6から移行したばかりです。 .Net以降の場合、オブジェクトのインスタンスは宣言される位置で生成されるんですね。 ご丁寧にどうも。
ほぇ?
275 :
デフォルトの名無しさん :2007/12/28(金) 13:16:22
>>272 とにかく、
Dim myObj As New MyObject
も
Dim myObj As MyObject = New MyObject()
も、
コンストラクタを呼び出してインスタンスを生成しているんですよね?
何か意味変わったんでしたっけ?
>>275 For i = 1 to 3
Dim myObj As New MyObject
Next
.NETでは予想通りMyObjectは3回生成されるが、VB6は1回だけ。
VB6の as new 構文の楽しい挙動 Dim frm as New Form1 frm.visible=true '表示される set frm=nothing 'とりあえず Formsコレクションに残っているので表示されたまま frm.visible=true '2つめが表示される
278 :
デフォルトの名無しさん :2007/12/28(金) 16:08:55
>>276 あーそうだったんですか!、そうとは知らなかったです。
ありがとうございました。
279 :
デフォルトの名無しさん :2007/12/28(金) 16:11:56
>>277 えー、、そうだったのですか!!それも知りませんでした。
set frm=nothing
ってDisposeの効果はなかったんですね、しかもそれをしても
プロパティが生きていたと。
>>279 VB6のはちょっとちがう
as new 構文の場合「オブジェクト変数がNothingの状態の時に,オブジェクトへのアクセスが必要なら,新たに作成する」という挙動
281 :
デフォルトの名無しさん :2007/12/28(金) 19:20:01
みんなくわしいの〜。 会社に入ってきちんと教えてもらうわけでもなく現場で揉まれるようにVB6を見につけた俺にはありがたい話や。 正直知識じゃなくて経験だけでコードを書いているよ。 ちゃんと勉強するにはどうしたらいい?参考書とかある?
>>281 VB6のことを学びたいのならここは場違いだと思うわけだが
ああ、ごめん流れが6だったから間違ったわw .NETもしてるんやけど.NETをきちんと勉強したら6はしなくていいのかな? それとも6の知識が.NETにも反映されるかな?
>>283 VB.NETのためにVB6するなら教養程度だな(予約語をしってて安心レベル)
書き込み失礼します。 当方VB2005使い始めて1週間のど素人です。 質問なのですが、VB6.0で作成した「Winsockを扱うプログラム」を 2005用にアップデートしつつ改良したいと考えています。 VB6.0/2005双方がインストールされているPCでは2005上でのデバックもexeの実行も 出来るのですが、2005のみがインストールされているPCでは実行・デバック共にwinsockの部分でエラーが 出てしまいます。 これは何が原因なのでしょうか? どなたかよければ改善の方法などアドバイス頂けると嬉しいです。 ちなみにエラー文は「'System.Runtime.InteropServices.COMException' の 初回例外が AxInterop.MSWinsockLib.dll で発生しました。」というものでした。
MSWinSck.ocxが無いから。 VB6があるなら再配布権が付いてたはずだから、 インストーラ作って配布すれば。
winsock捨ててSystem.Net以下のクラスで書き直すのも手
288 :
285 :2007/12/28(金) 22:50:48
>>286 調べてみたんですが、VB6.0の再配布権というのが
イマイチよくわかりません・・・申し訳ないです。
MSWinSck.ocxでググッた時に出てくる「VBランタイム」を
インストールすることでこのエラーは解決できるのでしょうか?
>>287 その方法も考えたのですが、正直自分にはまだそれだけの技量が無くて・・・。
winsockを配列にして利用したり、非同期でのメッセージ送受信なんかをしているのですが
これらを.netに対応した書き方に変更するにはもう少し勉強が必要な状態です・・・。
>>288 COM使うのも一苦労
コンバータでナントカ成らない部分の方が多いって聞くから,
個人使用(だよな?業務でコンバータとか使って,Socketつかえねwwコンバータうはおkとかヤバイよ)ならおとなしくSocket使いなさい
290 :
285 :2007/12/29(土) 15:38:15
>>289 業務ではないです。
完璧個人的な趣味ですねw
Socketでやろうと色々あがいてみたんですがやはり難しいです・・・。
MSWinSck.ocxもインストールしてみたんですがやはり動きませんし。
八方塞です(´・ω・`)
>>290 とりあえず、何が難しいのか書いてみたら?
292 :
285 :2007/12/29(土) 18:30:31
>>291 えーと、6.0ではwinsockを使ったログイン管理・メッセージの送受信に用いた
簡単なメッセンジャーソフトを作っていたんですよ。
その時にWinsockを配列にして送信先や受信先を固定?することによって
個別チャットを可能にしていたんですが、それと同様の事をSocketで行う
方法がわからなくて・・・。
SocketというかTcpListenerクラスを用いて1対1での通信なら
理解できたのですが、1対多や相手先を指定してのメッセージ送受信の方法が
イマイチ理解できないのです・・・。
何か参考になるようなサイトや参考書をご存知でしたら是非教えていただけませんか?
294 :
285 :2007/12/29(土) 19:07:39
>>292 すいません・・・そのサイトを見て挫折したんです・・・。
まず「connetで繋げたsocketを渡す」ってところで死んでしまいました。
流れきってすいません。 私もVB2005で質問なのですが、どなたかアドバイス願えますか? 「'System.Data.OleDb.OleDbException' の初回例外がSystem.Data.dllで 発生しました。」というエラーはどういった意味なのでしょうか? DBはacsessを使っているのですが、SQL文を実行すると「ディスクまたは ネットワークのエラーです」というエラーが出ると共に上記の初回例外が発生してしまいます。 前回ソースを弄るまではエラーもなくSQL文の実行も出来ていたのですが・・・。 原因に心当たりが全く無く、どうしようもない状態です・・・。
>>294 WinsockコントロールだってAcceptイベントでソケットID返ってくるだろ?
それがソケットオブジェクトになっただけ
必要な値とかを入れたdt(DataTable)に、値に応じて色分けしようと思ってるんだけど、 Dim dv As DataView = dt.DefaultView DataGridView.DataSource = dv の後 DataGridView.AlternatingRowsDefaultCellStyle.BackColor = Color.FromArgb(240, 240, 240) こんな感じで、一括の背景色変更はできるんだけど、 DataGridView.Rows(1).DefaultCellStyle.BackColor = Color.Black 行を指定して変更しようすると、変更が反映されません・・・ ちなみに、行・列を指定して値の取得・変更はできるんで、更新のタイミングが合ってないとかでは ないと思うんだけど、何がなにやらさっぱりです。 どなたかご教授を。。 ソースとかで不足分があれば言ってください。環境はvb2005です。よろしくお願いします。
299 :
デフォルトの名無しさん :2007/12/31(月) 12:49:02
何か今日、とてつもなく悪質なブラウザクラッシャーが現れたというニュースが
出ていました。IE6以前のものだと防止できないとのことでした。
↓
【IT】 HDDをフォーマットするWebサイト登場。ご注意を!★2
http://mamono.2ch.net/test/read.cgi/newsplus/1199047353/ これというのはつまりは、WebBrowserコントロールを使ったものも同様だということかと
思いました。プログラムでは対応不可能ということでしょうか・・・・・・・?困りました。
プログラム上では対策はどうしたらいいでしょう?
Nortonなどでの対策を期待してよいのでしょうか・・・?
300 :
デフォルトの名無しさん :2008/01/01(火) 16:22:02
スレ違いかもしれませんがちょっと質問させて下さい。 これまで、First ServerにてレンタルしたASP.net(C#)での開発を行って おりましたが、レンタルをすると色々と制限があり、 どうにか自宅に同様の環境を構築出来ないかと考えております。 そこで「自宅サーバ」というキーワードでぐぐってみたところ Apache + MySql + PHP で一通りのWebDBシステムが構築できる事が分かりました。 しかし、PHPはこれまで一度も触った事がありませんので、 出来れば、経験の豊富なC#(VB)つまりASP.netシステムを自宅で構築し 外部に公開出来ない物かと考えています。 ※確かIISに頼った公開方法ではアクセス数が確か制限されてしまうと の事でしたので、IISを使わずに何か公開する方法はありますでしょうか? (Apache等)
>>300 IIS以外でASP.NETをやろうと思ったら、MONOしかないがそっちの方がいろいろありそうだ。
>※確かIISに頼った公開方法ではアクセス数が確か制限されてしまうと
この辺なにか勘違いしてそうだからよく確認してみろよ。
Windows Server系じゃないとライセンス上イントラサーバーにしか出来ないということじゃないか?
CALの制限がやらしい、って話? そのためのWeb Editionでないの?
VB.NETです 避けゲーを作成 背景が白色じゃ淋しいと思い写真をフォームにのせ背景に フォームロードに写真を表示させる命令を書いて実行 動いたあとが白くのこる。自機や玉を動かしたあと、白く塗り潰しているせいなので、この命令を削除。次は自機や玉の絵が分身してしまう マスク処理や画像透過ではどうにもならず… 何か良い方法はないでしょうか
>>303 >自機や玉を動かしたあと、白く塗り潰しているせいなので
このときに処理していたイベントで、フォームの背景を再描画する。
てか初歩中の初歩だろ・・・
Refresh
306 :
デフォルトの名無しさん :2008/01/02(水) 11:54:57
プログラマは中年になってから先がない クククク・・・・・
白く塗りつぶす発想は無かった(´・ω・`)
308 :
デフォルトの名無しさん :2008/01/02(水) 22:43:53
すみません、教えていただけますか、よろしくお願いします。 Brush型のプロパティを作った場合、それをプロパティグリッドで編集可能にするには どうしたらいいでしょうか。Color型の場合は自動的に編集可能になるのですが、 Brush型だと編集可能になりません。よろしくお願いします。
回答じゃねーんだけどさ、 GDIリソースを使うオブジェクトをぽこぽこプロパティで変更できるって 気持ち悪くない?
310 :
308 :2008/01/03(木) 12:40:49
>>309 レスどうもです、としますと、Brush型のフィールドを外部設定させるためには、
たとえば、Color型の仮のプロパティを作って、それを設定させておいて、それを
見て、なんらかの形で本命のBrush型のフィールドをコードで設定する、といった
感じで行うしかないでしょうか?
その場合は、たとえば、Color型からうまくBrush型を作成する方法はどのように
なるでしょう。(Colorですと、FromNameなどがありましたが、Brush型の場合には
便利な方法があるといいのですが・・・まだ見つけられていませんでした)
Brushを保持するんじゃなくてBrushを作成するためのデータを保持する。単一色ブラシならデータ=Colorだな。 Brush自体は実際に必要なたびに作って済んだらさっさとDispose。 あとBrushクラスの解説を読むといいよ。
312 :
デフォルトの名無しさん :2008/01/03(木) 14:23:00
>>311 どうもです。
>>310 の
>Color型からうまくBrush型を作成する
件は、SolidBrush型のインスタンスを利用することとして、その
Colorプロパティを設定するほかに方法がなさそうでした、これで
やってみます。
(Brush型というのは、Colorを与えて共有メンバーにして持つ
ということができないのですね・・・。)
2 + 3 とtextbox1に書いて ans = textbox1.text 右辺を 2 + 3 と式で計算させるには どうすればいいですか。
Dim ans As Integer Dim num(1) As Integer num = Split(TextBox1.Text,"+") ans = num(0) + num(1)
>>313 ひんと:カッコ非対応
private function evaluate(ByVal String s) As Double
dim i as integer
i=s.indexof("+"): if i<>-1 then return evaluate(sのiより左)+evaluate(sのiよりも右)
i=s.indexof("-"): if i<>-1 then return evaluate(sのiより左)-evaluate(sのiよりも右)
i=s.indexof("*"): if i<>-1 then return evaluate(sのiより左)*evaluate(sのiよりも右)
i=s.indexof("/"): if i<>-1 then return evaluate(sのiより左)/evaluate(sのiよりも右)
return sをdouble型に変換したもの
end function
316 :
313 :2008/01/03(木) 15:26:47
>>314 ,315
レスありがとうございます。
がすいません。
textbox1に書けるのは、任意の式ってことで。
3 - 6 * (9 - 2) * Math.sqrt(5)
とか。
ようは書いた文字列がそのままプログラム文に
なるイメージです。
>>316 つ その「任意の式」を解釈して実行するエンジンを作れ
もしかしたらスクリプトコントロールとか,.net frameworkのコンパイルしてくれるアレが使えるかもしれないが
よーわからん
318 :
313 :2008/01/03(木) 15:39:21
実現するためには、やっぱ式を解析する プログラム作らないと駄目ですかね・・・
319 :
300 :2008/01/03(木) 17:00:31
>>301 とりあえずPHPだけじゃなくても設定次第で
WindowsXP(Home) + Java
で自宅サーバを構築出来そうな感じです。
それを外部公開するなよ?
321 :
300 :2008/01/03(木) 17:31:59
なぜ?
素直にレンサバでC#+IIS+ASP.NET+SQLserverで公開してろよ 経験豊富なんだろ(笑) それだけ使えりゃ何でも作れるぞ。
ライセンス違反だから Javaなら素直にLinux使っとけ
ライセンス違反じゃないよ
ライセンスの話になっちゃたらもうスレ違い。他でやっとくれ。
>>318 自分で式を解析して計算するなら逆ポーランド記法
327 :
300 :2008/01/03(木) 19:23:12
>>322 .NETばかりやってて飽きたからです。
3年位前にはJavaやってたけどかなりブランクがあるので色々(特に開発
環境構築回り)と忘れています。感覚を取り戻す為にも自宅でサーブレットを
動かし公開しようと思っています。
>>323 Solalisは使った事がありますがLinuxは使った事がありません。
>>323 そんなの関係ねぇ〜♪
>>324 俺もそう思います。
XPのHomeはサーバを建ててはいけないライセンス。
建てたらいけない建て方もあるってだけだよ。 回避可能。
330 :
デフォルトの名無しさん :2008/01/03(木) 23:11:52
>>330 ライセンス上はHomeはサーバOSじゃないから,サポート外とかそんな感じだったはず
一度にTCPで5接続以上はダメじゃないかな(事実上可能だけど.UDPはしらね.)
こんばんは、どうか力をお貸し下さい。
現在テンプレートを使ってPDFファイルを出力する処理を作成しております。
今はソースがない為、参考にさせて頂いたサイト様のコピーで失礼致します。
サイト様:
http://d.hatena.ne.jp/halo_w2/20070212/p2 ほとんどそのまま使わせて頂き、3行目だけ変更しました
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment; filename=test.pdf");
//Document doc = new Document(PageSize.A4, 30, 20, 80, 20); ↓のように変更
Document doc = new Document(PageSize.A3.rotate, 10, 10, 10, 10);
PdfWriter pw = PdfWriter.getInstance(doc, Response.OutputStream);
doc.open();
PdfReader pr = new PdfReader(Server.MapPath("template.pdf"));
PdfImportedPage page = pw.getImportedPage(pr, 1); // インポートするページを指定する
PdfContentByte pcb = pw.getDirectContent();
pcb.addTemplate(page, 0, 0);
A3の横向きファイルにするためにA3.rotateとしましたが、テンプレートのほうは回転せずに
縦方向のまま表示されてしまいます
([==]としたいところが[‖ ]となる)
自分なりに調べてみましたが、解決方法が見つかりません。
どうぞよろしくお願い致します。
はじめからテンプレートを横に作っておけばいいじゃん
335 :
333 :2008/01/04(金) 03:28:57
>>334 テンプレートのPDFファイルは横向きに作ってあります
普通に開いた場合も横向きで表示されますが、テンプレートにすると縦向きになってしまうようです。
ふへ?テンプレートは、縦に作ろうが、横に作ろうが、 縦向きになってしまう、といいたいの?
337 :
333 :2008/01/04(金) 09:02:49
338 :
333 :2008/01/04(金) 11:57:43
pcb.addTemplateの数値を変更することで無理矢理回転させることはできましたが、 カーソルが縦方向(I型ではなくH型)のままになってしまいます。 いざとなったらこの方法で行こうと思いますが、 もっとスムーズな方法があるのではないかと考えてしまいます・・・ まだわかる事のある方がいらっしゃいましたら、 どうかよろしくお願い致します。
339 :
デフォルトの名無しさん :2008/01/04(金) 15:38:44
話題が変わってしまっていますが303です。 私用でPCに触らず今日レスを見ました。 結果はちゃんと描写できました。 マスクやスプライトばかりかと思い、Refreshに関してはまったく考えていませんでした ありがとうございました
すいません。一つ質問させてください。 GridViewでマスターの一覧を表示し、選択ボタンを押すと 別ページに飛び、選択したマスターの詳細を表示させる 画面を作ろうと思うのですが、 GridViewで表示されている項目は Session("XX") = row.Cells(0).Text で持ってこれますが、GridViewに表示していない項目を 同じようにSESSIONに持ってくることはできるでしょうか? 環境はPCがXPでVBはVS2005、言語はVBです。 宜しくお願いします。
御用とお急ぎない方は見ておいで 常陸の国は筑波山で捕まえたVB脳だよ〜
今日日ガマの油ってオッサン歳幾つだよ 率直にいってまず間違いなく50代以上だと推定するが、 いい歳こいたオッサンが餓鬼みがいなこと書いて恥ずかしくないのかね
だまれ小僧
お前にあの娘の不幸が癒せるのか
345 :
デフォルトの名無しさん :2008/01/05(土) 12:39:05
>>342 それを知ってるお前は40代以上ってことか?藁
>>342 自分がモノ知らないのをそんなに吹聴しなくてもいいよw
俺20台前半だけど知ってたぜ
ボク、女子高生ですけど知ってましたわよん
あたしもネカマだけど知ってたわよ
俺もWEBデザイナーだけど知ってたよ
おれカエルだけどしってたゲコ
ニートも
VB.NET 2005 .NET Framework Version 2.0.50727 Dim FileOpen As New OpenFileDialog() でファイルオープンの準備して FileOpen.ShowDialog() でダイアログを表示した後、キャンセルで戻ってくると問題なし ファイルを選択して戻ってくると WritePrivateProfileStringで書き込めなくなります。 原因、回避方法ありましたらお願いします
>>353 全く状況がわからないんが…。
FileOpenダイアログ出してフルパスを取得するんだろ?
戻り値がキャンセルならWritePrivateProfileStringは何に書き込んでるの?
書き込めなくなるってことは、WritePrivateProfileStringの戻り値が0なんだよな?
C#の過去ログに同じパターンのがありました。 一応記述 原因:OpenFileDialogを呼び出すとカレントディレクトリがその場所に変わる 書き込めなくなるのではなく、カレントディレクトリが移動され、別の場所に書き込んでいたようです
回避方法:ダイアログを閉じる前に現在のディレクトリをカレントに FileOpen.RestoreDirectory = True
帰省から戻り、スレを開いてみたら「あけおめ」のひと言もなく淡々と進んでいるこのスレ。大好きだw 月曜から仕事じゃい! おまいら今年もよろしくお願いします。 仕事で詰まったら質問させてね。
359 :
デフォルトの名無しさん :2008/01/06(日) 16:33:36
VB2005で質問があります。 TabControlは各ページがコンテナになっていて それでデザイン時にページを切り替えたりする事ができますけど、 各ページがコンテナになっていないTabControlはなくなったのでしょうか?
まーたそういう読み手がエスパーであることを前提とした質問を平気で書く。 そういう愚鈍な神経してるからいつまでも三流なんだよ君は。 だいたい同じ人間相手に意味を通じさせる文章一つ書けない奴に ずっと融通が利かない機械相手のコードを書く才能があるはずがないよ。 「なくなったのでしょうか?」とは、何と対比して「なくなったのでしょうか?」なんだよ。 VB6のTabStripのことを言っているのなら同等品はない。
別にコンテナ領域を無しにして、タブ領域のみの大きさにすればいいんじゃね? 必要なイベントはみんなあるはずだから。
363 :
デフォルトの名無しさん :2008/01/07(月) 08:02:11
質問です、よろしくお願いします。 いくつかのプロパティが定義されてあるクラスがあって、それを継承した 派生クラスにおいて、それらのプロパティのうちのいくつかだけをプロパティグリッド に表示させないようにしたい場合は、 継承元の側で、その対象のプロパティを Overridable にしておき、派生先ではそれを オーバーライドして中身をなにか別のものに定義し直し、それに <Browsable(False)> と属性設定する、というような形にすればよいのでしょうか、またこれが可能とした場合でも こうした方法は一般的な方法でしょうか?そうでないとしたら最も一般的な方法はどのような 形となるでしょうか? ご指導いただけましたら大変ありがたく、何卒よろしくお願い致します!!
いいんじゃないそれで
365 :
デフォルトの名無しさん :2008/01/07(月) 09:39:57
>>364 やはりこれでいいのでしたか、ありがとうございました。
この場合、仮にもしも、このオブジェクトをプロパティグリッドで表示する際に、
もしも継承元のクラスでキャストしたもので受けてしまったような場合は、
せっかく付けたこの属性 <Browsable(False)> も元に戻って結局また表示されて
しまうことになってしまうのでしょうか?(そういうことさえしなければ、確実に表示を
防止できると・・・) 何卒よろしくお願いします。
試せばいいよ
367 :
デフォルトの名無しさん :2008/01/07(月) 11:26:27
>>366 わかりました、ありがとうございました。ではまたよろしくお願いします!
368 :
デフォルトの名無しさん :2008/01/07(月) 15:46:45
すいません、教えてください。 DateTimePickerのボタンを押すとMonthCalenderが表示される感じで、 ボタンを押すと下に特定のコントロールが表示されるようなコントロールを作成しようと思っていますが、 方法がイマイチわかりません。 あれはどのように作られているのでしょうか? ボタンが押された時に、特定のコントロールが載った別フォームをそこに表示するようにしてみましたが、もっとスマートな方法がありそうな気がします。 どなたか解かる方、ヒントでも構わないのでご教示お願いします。
基本的にはFormでやるんでいいんじゃない? P/InvokeしまくればどんなWindowでもつくれるだろうけど。 Formの枠なくして CreateParamsオーバーライドして影つけて ShowWithoutActivationオーバーライドしてフォーカス奪わないようにしたりして
370 :
368 :2008/01/07(月) 16:13:50
>>369 レスありがとうございます。
>基本的にはFormでやるんでいいんじゃない?
安心しました。
とりあえず別Formを使う方法で不自由はしていないので、このまま作っていこうと思います。
また自分でも調べて何かわかったら報告いたします。
371 :
デフォルトの名無しさん :2008/01/07(月) 21:26:59
フォームの枠外をクリックしたときのイベントを拾えるようにするにはどうしたらいいの?
WM_NC**
スレ違いかもしれませんが、 vb.net2005で開発しているので質問させてください。 Datatableのデータをできるだけ早くDB(OleDb経由)にinsertする方法が分かりません。 具体的にいうとcsvファイルをSQL ServerやOracleにインポートすることを想定しています。 現在はインサート先テーブルのDataTableを作成しNewLineで行を作成し、 ちまちまとデータをセットしてからDataAdapterを通してUpdateしています。 この場合1行ずつのInsertになってしまうので遅くなってしまいます。 理想は "insert into 先テーブル select * from [DataTable]" のように1発で行えればいいのですが、それも無理そうなので、 何かよい改善方法はないでしょうか? SQL Serverに限ればBulkCopyの速度が圧倒的ですが、 できればトランザクションに含められる方法でないでしょうか? よろしくお願いします。
汎用的な方法はない。 ので、あえてその条件でいうなら、挿入行分INSERTを発行するのが 出来うる限り速い。それ以上はそれぞれのDB毎のお話になるはず。
375 :
デフォルトの名無しさん :2008/01/09(水) 02:58:15
オワタ\(^o^)/ 留年したほうが、最終的にはためになるよ ここで人の手を借りてその場をしのぐよりさ。 まあ生涯賃金に差が出るわけだが
簡単だな 何か見返りがあればやってもいいがな
講義を通じてできない課題や試験を課されるはずがないので それが1年勉強した成果だと思って諦めたほうが精神的にも大人になれるような気がします
よかったな
>>375 15万ぐらいで進級できるなら安いもんだろ
( ;∀;)イイハナシダナー
383 :
デフォルトの名無しさん :2008/01/09(水) 09:22:34
>>375 君、教えてgooで宿題の質問しまくってアク禁にされた子だよね?
* + 巛 ヽ 〒 ! + 。 + 。 * 。 + 。 | | * + / / 吐き気を覚える程度の甘さ=親切 ∧_∧ / / (´∀` / / + 。 + 。 * 。 ,- f / ュヘ | * + 。 + 。 + 〈_} ) | それがゆとりクオリティ / ! + 。 + + *
385 :
デフォルトの名無しさん :2008/01/09(水) 12:13:20
すいません、質問させてください Public Class testClass Dim hoge As Integer Sub test() Static hogehoge As Integer 〜 End Sub End Class 例えば上のようなクラスがあった場合、 メンバ変数であるhogeと静的変数であるhogehogeに見た目以外の機能的な違いはあるのでしょうか?
hogehogeはあくまでローカル変数。メソッドを抜けても値は保持されたままだけど、他からhogehogeにアクセスすることはできない。
>>385 変数は受動的なので宣言しただけでは機能しない(最適化で切り捨てられる可能性もある…VBはどうだろうね,クラスライブラリとして外部参照される場合とかもあるし)
なので"〜"で省略してある部分で hoge と hogehoge を使い分けているなら,機能的な違いが出る
388 :
デフォルトの名無しさん :2008/01/09(水) 15:38:46
389 :
デフォルトの名無しさん :2008/01/09(水) 15:53:00
>>388 うわ、これで一気に教える気なくした
とっとと消えろ
まじで人違いで、
>>388 が「教えてgooで宿題の質問しまくってアク禁にされた子」なんじゃね?
単位の一つや二つ落としたところでなんともないだろ、常識的に考えて。
>>385 hoge の変数領域は testClass のインスタンス作成時に確保され、
hogehoge の変数領域は Sub test() を最初に呼ばれた時に確保されるので
test() を呼ばない場合にメモリの節約になると言う事を聞いた事がある。
間違ってたらごめん。
んなわけあるかい。 VB.NETでのstatic変数は内部的には単なるメンバ変数。
394 :
デフォルトの名無しさん :2008/01/09(水) 18:06:10
>>393 でもメンバ変数として宣言すると
'Static' は、メンバ変数宣言では有効ではありません。
ってエラーになるんだぜ?
うん むしろ回りくどい変なコードが生成されてかえって効率悪くなる罠
396 :
395 :2008/01/09(水) 18:08:34
397 :
394 :2008/01/09(水) 18:21:35
他のメンバからアクセス不可能なのにメンバ変数扱いなの?
ILで見ると匿名のフィールドになってるね。 Class Test1 Private A1 As Integer = 0 Sub Hoge Static A2 As Integer : End Sub End Class .class private auto ansi Test1 extends [mscorlib]System.Object { .field private int32 A1 .field private specialname int32 $STATIC$Hoge$2001$A2
メンバ変数として実装されるローカル変数というか
C++のstaticをイメージすると間違うね。まあ、クラス内で使うことはないか。
クラス内で使うことはない って何だよ インスタンスメソッド内で…ならわかるけど
>>400 ん?
C++においてローカル変数に付くstaticに限れば同じ意味じゃないの?
C++だとインスタンスごとじゃなくてクラス変数(?)になるんだっけ?
C++だとクラス変数扱い。C#たしかjavaもはメソッド内のstaticは不可。 VB6のころは共通モジュール以外でStaticは使ったことがなかったので、 .NETでもModuleでOnlyでクラスモジュール内では使うことはないなといいたかった。
特定の単一メソッドにアクセスが限られたメンバ変数、って感じかな? C++は無知だけど、Javaでこれにあたる修飾子はないよね?
例えばTabPageのようにオートスクロール可能なコントロールのスクロールを マウスのスクロールボタンで操作する場合、スクロールさせるコントロールに クリックやホバー等のイベントを利用してフォーカスを渡す必要があると思いますが コントロールに子コントロールがあると子の上でクリックしてもフォーカスを渡せませんよね? 子コントロールをクリックして親コントロールにフォーカスを渡すにはどうすればよいでしょうか?
406 :
373 :2008/01/09(水) 22:11:50
>>374 亀レスですが、レスありがとうございます。
有効な手段は無いのですね。
今のままでも我慢できないほどではないので、
少しずつチューニングしていこうと思います。
プログラム初心者です。 VB.NETでスライドショーを作成しているのですが、ずっとプログラムを動かしていると どんどんメモリの使用量が増えていきます。(タスクマネージャーを開いて、プロセスのところでコミットチャージがどんどん増えていきます) どうやれば、メモリの使用量を抑えることができるでしょうか? ちなみにプログラムはフォルダにある画像を配列にいれ、それをTimerで次々とピクチャーボックスで表示させ、 全て表示させるともう一度最初の画像を表示させるという風にしています。
>test() を呼ばない場合にメモリの節約になると言う事を聞いた事がある。 多分初期化のタイミングの話だろうな。 でかいオブジェクトならまあそういうこともある。
イメージが開放されてないんじゃね?
たぶんそういうことだろうね
411 :
407 :2008/01/09(水) 23:46:26
お返事ありがとうございます。 イメージを開放というのは、ピクチャーボックスにDisposeみたいなものを使うということでしょうか・・・ ちなみにアプリ終了時は↓を使って終わってるので、メモリー消費量がかなりおさまってます Me.Close() Me.Dispose()
412 :
407 :2008/01/09(水) 23:48:12
理想としては、フォルダの画像一周したら開放。 そして、また位置から画像表示みたいな風にしようかなって思ってます。
>>411 ImageオブジェクトのDispose()ちゃんとやってる?
>>407 なんかトンチンカンな回答が多いが、問題の本質は画像を配列に格納していること。
冷静に考えてみ?
そんな無駄なことをする必要がどこにある。
415 :
407 :2008/01/10(木) 00:18:26
ありがとうございます。
>>413 ためしにやってみたのですが、やはりうまくいきませんでした。
私の認識がおかしかったのかもしれませんが・・・
>>414 確かにわざわざ入れる必要がないことに気がつきました。
もう一度、考え直してプログラムを作ってみようと思います
>>389 サーセンwww
友達からもらいましたwww
おうおう、順番がまちがってらぁw まず先輩・友達をあたってからここへ来いw
友達にあたるなよ?
Try 〜 Catch ex As Exception End Try
420 :
デフォルトの名無しさん :2008/01/10(木) 20:04:26
すみません。 Try 〜 Catch ex As Exception 〜 End Try これで出た例外 ex をもっと細かく分離して受け取る場合は Try 〜 Catch ex As Exception 〜 Catch ex As HogeException 〜 Catch ex As HogeHogeException 〜 End Try などとするということで良いでしょうか?このCatchの順番を間違えると 受けたい例外の種類として確実に受けられないということはあるでしょうか? (たとえば上の順番だと、全部最初のExceptionで受けてしまうことになるの でしょうか?
Catchするな つーかthrowしてみりゃいいだけの話
Catch だけでダメなら When も使えば良いじゃない。
423 :
デフォルトの名無しさん :2008/01/10(木) 20:38:55
>>421-422 わかりました。
When ステートメントとかもあったのですね、勉強になりました。
質問です。 DataGridViewでセル番地を指定して処理したいのですが (x,y)のように指定するのはどのメソッドを使えばいいのでしょうか?
>>424 DataGridView(columnIndex,rowIndex)
とか
DataGridView(columnName,rowIndex)
columnIndexはイマイチ怪しいときがあるので、後者のカラム名指定の方が確実かなぁ
なんじゃそりゃ
427 :
デフォルトの名無しさん :2008/01/11(金) 13:16:09
ColumnNameで指定しておけば、あとあと列の追加とかあった時にいちいち対応しなくてよいでしょ
428 :
424 :2008/01/11(金) 23:04:42
>425さん ありがとうございました。
429 :
デフォルトの名無しさん :2008/01/12(土) 01:51:26
てす
てす
Private Sub Form3_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _ Handles Me.KeyDown Dim ctrl As Control = Me.SplitContainer3.ActiveControl If Not TypeOf ctrl Is TextBox Then Exit Sub If e.Control Then Select Case e.KeyCode Case Keys.A DirectCast(ctrl, TextBox).SelectAll() Case Keys.C DirectCast(ctrl, TextBox).Copy() Case Keys.X DirectCast(ctrl, TextBox).Cut() Case Keys.V DirectCast(ctrl, TextBox).Paste() Case Keys.Z DirectCast(ctrl, TextBox).Undo() End Select End If End Sub ↑を実行するとCtrl+A以外の条件ではKeyDownイベントが発生しないのですが どんな原因が考えられるでしょうか?
テキストやjpgファイルの作成日時をVBから変更することは出来るんでしょうか?
System.IOの下を眺めとけや
簡単なテキストエディタ機能を実装しているのですが 選択した文字列をコンテキストメニューから削除する方法で手間取っています txtCommand.Text.Replace(txtCommand.Text, String.Empty) としてますが、Undoしても効かない状態です。 Undoできるようにする方法はありますでしょうか。
txtCommandの型は?
すみません、正しくは txtCommand.Text.Replace(txtCommand.SelectedText, String.Empty) でした
440 :
デフォルトの名無しさん :2008/01/12(土) 14:34:45
>>431 普通にCtrl+A以外も拾えたよ?
FormのKeyPreviewがTrueになってたら、イベント自体は絶対発生してると思うけど。
441 :
デフォルトの名無しさん :2008/01/12(土) 19:29:57
アイコンをつくって実行ファイルにつけたのですが アイコンがちっちゃいサイズで表示されるとき 絵がちゃんと表示されないんですがなぜですか?
442 :
デフォルトの名無しさん :2008/01/12(土) 20:07:54
TextBoxに長い文字列を表示させたいのですが、 TextBoxの幅を十分に取ることができません。 それで、複数行に表示させたいと思います。 しかし、文字列に改行を含ませるわけにはいきません。 それでtextBox.Multiline=true、textBox.AcceptsReturns=false と設定してみたのですが、 入力してみると改行を受け付けてしまいます。 なぜ???? 何か思いっきり勘違いしてる? 他のプロパティはデフォルトのままです。
なんでMSDN読まないの?
OK ありがとう AcceptsReturnsでは望みの動作は得られないってことね じゃ、上記の動作をさせるにはどうしたらいいんでしょう?
自己レス KeyDownとKeyPressの組み合わせできました
446 :
431 :2008/01/12(土) 22:35:07
>>440 ありがとうございます。
自分もさっきフォームにテキストボックス1つのシンプルな配置でやってみましたが
ちゃんと拾いますね・・・
でももともとのフォームで実行するとCtrl+A以外ではイベントが発生しないんです・・・
ちなみにそのフォームというのは
下 Form - SplitContiner - TabControl - Panel - TextBox 上
の順番で重なってますが全く原因がわかりません・・・
447 :
431 :2008/01/12(土) 22:39:00
ちなみのちなみですがKeyDownではなくKeyUpだと
>>431 の条件すべてで
イベントが発生するのですが、KeyDownだけ発生しない原因てなんでしょうかねぇ・・・
448 :
デフォルトの名無しさん :2008/01/13(日) 00:10:35
試していないから解らんが >下 Form - SplitContiner - TabControl - Panel - TextBox 上 なら If Not TypeOf ctrl Is TextBox Then Exit Sub ↑ここで抜けてる気がするなぁ。 Ctrlの定義を Dim ctrl As Control = Me.SplitContainer3.TabControl.Panel.ActiveControl にしなきゃダメな悪寒 イベントが発生しないと書いているが、イベント事態は発生してるんじゃない? イベントハンドラの一番上にmessageboxなりConsole.writeなり書いてイベント事態が起きてるかどうか確認してみた?
449 :
431 :2008/01/13(日) 02:00:27
>>448 MessageBoxで確認しているので間違いなくCtrl+A以外ではイベントが発生していません
Controlキー単独だとKeyDownイベントが発生しますが、Ctrl+A以外のキーだと駄目です
マジで心当たりのある方、お願いいたします・・・
階層上のすべてのコントロールでキーイベントとってみれば。 Spy+使ってどのハンドルにメッセージが来てるか見るとか。
451 :
デフォルトの名無しさん :2008/01/13(日) 02:55:05
>自分もさっきフォームにテキストボックス1つのシンプルな配置でやってみましたが >ちゃんと拾いますね・・・ 解決糸口はここだよなぁ。上記の通りであれば、環境的な問題ではなく、何かのコントロールがジャマしてるんだろうか。 SplitContiner - TabControl - Panel - TextBox となっているみたいだけど、 SplitContiner - TextBox TabControl - TextBox Panel - TextBox みたいな感じで地道に試してみるしかないのかな?
452 :
デフォルトの名無しさん :2008/01/13(日) 03:05:30
>>431 のコードで
>>446 の
下 Form - SplitContiner - TabControl - Panel - TextBox 上
の順にコントロール置いて試してみたが普通に全部拾えた。
FormのKeyDownが拾えなくなるってことは、どこかでFormのKeyPreviewをFalseにするようなコードが書かれてるのか?
TextBox自体のKeyDownはちゃんと発生しているのかな?
ちょっと質問です。 VB.NETでDataTableオブジェクトとかが使用しているメモリ量を見たいんですが タスクマネージャでは今一歩正確性に欠けるので(できれば)フレームワークなどの機能で計測できないでしょうか?
CLRプロファイラじゃ駄目なん?
>>454 早速のレスサンクスです!!!
ググってサイトみてみました
おそらくヒープメモリの割り当てサイズが知りたいのでまさにこれではないかと!!!!
ちょっと明日にでも使ってみます!!
助かりました ありがとうございました。
>>449 俺もそうなった時があった。
MDIフォームの子フォームとして使ってたため
イベントがメニューのショートカットに持っていかれてた。
すいません。くだらない質問だと思いますが、ご教授お願いします。 tabコントロールで特定ページに入ったとき、 既に生成されてるDataTableを元グラフを描画しようとしています。 そもそも、VBの挙動の根幹部分から分かっていないのですが、 特定タブに入った後に、ボタン等のイベントを拾って描画はできるのですが、 これだと、別のタブに移動した後に、再びこのページに戻ってくると、 再度ボタンを押して描画させなければなりません。 それだと面倒なので、特定ページに入ったときに描画させるようにしたいのですが、 Handles TabPages1.Click だと早すぎるのか?描画がされて消えてしまうような感じですし、 どのイベントを拾えばいいのかが分かりません。 どなたかこの辺を勉強しろでも構いませんので、教えてください。 よろしくお願いします。
ドトネトでは、というかWindowsでは描画はWM_PAINT(Paintイベント)で行うのが基本。 つまりその基本どおりにやるだけじゃないの?
459 :
457 :2008/01/13(日) 20:11:46
>>458 やっぱAPIを知らなきゃ話にならないですよね・・・
もう一つだけ、たぶんこれも勉強しろって事なんでしょうけど
教えていただきたいのですが、
Private Sub TabControl1_SelectedIndexChanged( _
ByVal sender As Object, ByVal e As System.EventArgs) _
Handles TabControl1.SelectedIndexChanged
MsgBox("test")
graph = New Graph(GraphArea, 100, 90)
End Sub
Graphクラスの初期化時に、グラフの背景を描画させているのですが、
TabControl1の選択時に、
MsgBox("test")と、ワンクッションおくと、きちんとグラフが描画されるのに、
これが無いと描画されないというのは、どういう原理なんですかね・・・?
もしよろしければ教えてください。お願いします。
460 :
デフォルトの名無しさん :2008/01/13(日) 20:28:43
描画されないっていうか、描画されたあと上描きされてるんだよ。
何もないと
グラフ描画したあとペイントイベントで上描き(→描画されていないように見える)
メッセージボックスを表示すると、そこで処理がとまるからペイントイベント先行、その後グラフ描画
となるからグラフが表示される。
>>458 の言うとおり、Paintのイベントハンドラ内でグラフ描画処理すべし
461 :
457 :2008/01/13(日) 20:39:46
>>460 なるほど、そういう事ですか。
ご親切に教えていただきありがとうございました。
もう少し精進してきます
462 :
デフォルトの名無しさん :2008/01/13(日) 20:44:24
ちゅかペイントのイベントハンドラで書かないと、フォームが重なったり隠れたりしたあと再描画されないからな(基本的に)。 まぁがんがれ(`・ω・´)!
463 :
デフォルトの名無しさん :2008/01/14(月) 12:06:10
フォーム以外のところをクリックした時のマウスダウンイベントを取得するにはどうしたら いいですか?このまえWM_NC**を使うということを聞いたのですが、マウスダウンのイベントが発生しないので困ってます どなたか教えてください
464 :
デフォルトの名無しさん :2008/01/14(月) 12:14:14
グローバルフック
465 :
431 :2008/01/14(月) 14:49:18
>>456 まさにそのとおりでした。ありがとうございます。
MDI子フォームでいつの間にか標準のメニューが挿入されていて
Ctrl+A以外がバッチリ割り当てられていたのですが
MenuStripのVisibleをFalseにしてあるので全く気づきませんでした。
IDEのほうでショートカット割り当てられると割り当てたキーでは
同じキーイベントは拾えなくなるんですね。
レスいただいたみなさん、ありがとうございました。
467 :
デフォルトの名無しさん :2008/01/15(火) 00:55:29
>>431 MDI子フォームと書かずに解答を出せとは難問だったな。
原因と思しき場所を絞って質問するのもいいが、全体を教えてくれなきゃ想像付かん場合もある。
何であれ、解決してよかったが…。
468 :
デフォルトの名無しさん :2008/01/15(火) 01:00:05
469 :
デフォルトの名無しさん :2008/01/15(火) 03:14:12
'.gif\P2P r
>>468 最小化、最大化、閉じるボタンの部分です
.NETのプロパティがControlBoxなのでそういう名称だと思っていましたが…
画像のようにデザインを変更したいのです
471 :
468 :2008/01/15(火) 10:27:18
そういえばそういう名称だったねwww なんか脳が溶けてました これってVistaのUIで、別に自前でつくっているわけじゃないと思う。 別OSでそっくりにつくるなら、タイトルバー消して、ボタン配置して、画像用意するかVisualStyleRendererでボタンの外装作り変えて…って感じになるのかな。
VistaのUIだと思ってダウンロードしたのですが、XPでもこのUIでした タイトルバーを消してやってみます ご教授ありがとうございました
473 :
デフォルトの名無しさん :2008/01/15(火) 14:47:28
ProgressBarについて教えてください。これを マーキースタイルにして そのスピードをMarqueeAnimationSpeedでセットすると、OSはXpですが Valueを操作しなくても自動的に動いてくれるようになるでしょうか。 ためしにそれだけやったところでは動き出すようにはなりませんでしたが、 メソッドを何か叩くことでスタートするのでしょうか。何卒よろしくお願いします。
474 :
デフォルトの名無しさん :2008/01/15(火) 14:55:40
Valueを操作しないで、何を持って100%だのなんだの感知させる?
475 :
デフォルトの名無しさん :2008/01/15(火) 15:15:29
>>474 さっそくどうもです。MarqueeAnimationSpeed は何がどこまで動く
速度になるかがわかりませんでした。Valueを入れて動かすとします
とスピードの効果が出てくるのでしょうか。そこがわかりません。
Marqeeは2003/Vistaでしかサポートしてなかったような希ガス
Windows XP Home Edition, Windows XP Professional x64 Edition, Windows Server 2003 プラットフォームメモ : Marquee スタイルはこれらのプラットフォームでのみサポートされています。
クラシック表示にしてまいか?
479 :
デフォルトの名無しさん :2008/01/15(火) 18:15:47
>>478 クラシック・スタイルではVisualStyleを使っていないので自動的には動かず
XpスタイルにすればVisualStyleを使っているので自動的に動くのでしょうか・・・。
どちらでも同じようにValueを与えないと動かないような・・・、それではもう一度
確認してみますです。
480 :
473 :2008/01/15(火) 18:48:51
>>479 試してみましたら、きちんと動作していました。認識が違っていました。
バックグラウンドワーカーと併用したときに何か別の原因で動かなかった
のを間違って記憶していました、すみません・・・。
ただやってみますとやはりシングルスレッドで動かすと動きが早くなったり
遅くなったりして等速では動かないですね・・・、これはタイマーでValueを
操作しても同じでした。等速で動かすには別スレッドでコントロールを直接Value
を与えることができないと無理そうな感じでした、といってもそういうオブジェクト
をいじるとNGなのですよね??
つうか裏でなんか重い処理してんだろ? 描画は多分優勢度低いから無理がある可能性が高い気がするよ。
>>480 どうしても気になるならフリースレッドの処理に時々Thread.Sleep()入れてやれば
改善するんじゃない?
でもそんなことにこだわる意味があるのかな?
プログレスバーの意義はユーザーに処理がフリーズしてない安心感を与えることだろうから、
それさえできれば必要十分な気がするけど。
483 :
デフォルトの名無しさん :2008/01/15(火) 23:12:39
>>481-482 >プログレスバーの意義はユーザーに処理がフリーズしてない安心感を与えること
わかりました。つっかえつっかえ動くような感じなのですが、それがプログラムの
作業によるのだということでこれでよしと考えました。ありがとうございました!
>>483 裏で動いてる処理を何一つとして理解してないだろおまえ……
485 :
デフォルトの名無しさん :2008/01/16(水) 09:58:17
質問です。ExplorerなどではHDD、CD-ROM、メモリースティック、 ネットワークドライブ、などの媒体をそれぞれ見分けてそのアイコンが表示されて いました。 これというのはそれを示す何かのパラメータを見て行っているのだと思いますが、 このパラメータを取り込むためのクラスがありましたら教えてください。
DriveInfo.DriveType
487 :
デフォルトの名無しさん :2008/01/16(水) 10:13:54
>>486 おお、あるのですね!ありがとうございました!!調べてみます!!
488 :
デフォルトの名無しさん :2008/01/16(水) 10:26:23
質問があります。 コンテナコントロールを派生させ子コントロールが置けるクライアント領域の範囲 を変更したいのですが、どのメソッドをオーバーライドすればいいのでしょうか? 例えば、コンテナコントロールの Width が 100 で Height が 200 ですと、 内部に子コントロールを配置してその Dock を Fill にすると、そのコントロールは Width 100 Heidht 200 になりコンテナコントロール全体に広がりますが、 このコンテナコントロールのクライアント領域を変更し、若干余白を持たせるため に既定で、上、下、左、右から 10 ピクセル程狭めたオリジナルのコントロールを 作成したいのです。
させ子がいると聞いて飛んできました
コンテナのプロパティになかったっけ?
Paddingのことか
492 :
488 :2008/01/16(水) 11:30:47
通常 Panel とかのコンテナコントロールのクライアント領域は、 横 0 〜 Width 縦 0 〜 Height ですよね。 これを変更して周りに 10 ピクセル程クライアント領域として認めない領域を作った場合、 横 10 〜 Width - 10 縦 10 〜 Height - 10 になりますが、この場合 Padding の Left や Top が 0 の場合は、 クライアント領域の一番左上(10、10)になるようにしたいのです。 恐らく Control クラス辺りをメソッドなどをオーバーライドすれば 出来そうな予感がするのですが、わからないのです。
493 :
デフォルトの名無しさん :2008/01/16(水) 11:44:38
VB VB.netのアルバイト情報 www.sfpac.com/
怪しい
面接官「特技はブラックジャックとありますが?」 学生 「はい。ブラックジャックです。」 面接官「ブラックジャックとは何のことですか?」 学生 「手術です。」 面接官「え、手術?」 学生 「はい。手術です。患者全員の足元を見て手術料をふんだくります。」 面接官「・・・で、そのブラックジャックは当社において働くうえで何のメリットがあるとお考えですか?」 学生 「はい。社員がケガしてもお金払えば治せます。」 面接官「いや、当社にはケガをするヤワな輩はいません。それに人のお金をふんだくるのは犯罪ですよね。」 学生 「でも、重症の足でも切断せずに治せますよ。」 面接官「いや、切断とかそういう問題じゃなくてですね・・・」 学生 「モグリなんですよ。」 面接官「ふざけないでください。それにモグリって何ですか。だいたい・・・」 学生 「医師免許を持っていな医師です。闇医者とも書きます。バレないコツは・・・」 面接官「聞いてません。帰って下さい。」 学生 「あれあれ?怒らせていいんですか?ふんだくりますよ。3000万円。」 面接官「いいですよ。ふんだくって下さい。おふくろの命が助かるなら3000万円くらい一生かかっても払います。」 学生 「その言葉が聞きたかった。」 面接官「先生・・・」
Panelの中にPanel作ってやった方が早くね?
497 :
デフォルトの名無しさん :2008/01/16(水) 13:55:22
>>496 とほぼ同じ意見だが、それだと親のパネルにもコントロールが置けてしまうので、
UserControlの指定した位置((10,10)とか)にPanelを配置したコントロールをつくればいいんじゃない。
498 :
デフォルトの名無しさん :2008/01/16(水) 14:51:37
いよいよ2月に2008が発売になると聞いたのですが、 2008で作ったソフトははVISTAで何も追加しなくとも うごくのでしょうか? NET3.5っていうことはNET3.0が入っているVISTA ではダメということ? これではいつになってもVB最新版で作ったソフトは 最新OSでは満足に動かないってことになるのでは? だれかご存知の方いらっしゃいませんか
心配無用
500 :
デフォルトの名無しさん :2008/01/16(水) 16:03:25
2008なら.NET Frameworkのバージョンが選択できるから、心配なら3.0でやればいいじゃん。 どうせ中身2.0なんだし。
Imageオブジェクトで、PNG形式のものをBMP形式に変換するメソッドとかは どこかにあるでしょうか?
Image.Save(String, ImageFormat)
503 :
デフォルトの名無しさん :2008/01/16(水) 16:55:10
>-1回くらいググれ馬鹿!
激しくワラタw
しかし、
>>503 もツンデレだなw
>>488 何故4方にアンカー打てばいいだけの話を面倒にしようとしているのかね?
506 :
485 :2008/01/17(木) 00:21:22
昨日 DriveInfo.DriveType の件、教えていただきありがとうございました。 CD-R をフロッピーと同じように読み書きできる B's Clip というソフト を導入していました。このときに Explorer では、コンテキストメニューや D&DなどによるCD-Rの読み書き、およびフォルダのリネームなどができました。 それで、Win32APIの SHFileOperation()でのコピーなどはできたのですが、 Explorerではできたフォルダのリネームを My.Computer.FileSystem.RenameDirectory() でやってみたところ、これは書き込みができない旨のメッセージが出てきて 失敗していました。 また、Explorerでは「取り出し」というメニューがあってCD-Rを取り出しできました。 こうした特定のファイルやデバイスの操作をExplorerではできる場合、それを なんらかの形でプログラムからもCD-Rドライブなどへの操作を可能にする ためにはどんな方法をとるべきでしょう?どこかにそれ用のAPIなどがわかる ようになるでしょうか?
>>506 COM経由でいけると思う
IShellFolder::SetNameOf とか IContextMenu.InvokeCommandとか。
知らんけど。
CDの取り出し自体はDeviceIoControlでできる
>>506 そのCDドライブ上のファイル操作はB'sが
シェル拡張を仕掛けているからできるようになっている。
だから、SHFileOperationのようなシェルに対する操作はできるが、
My.Computer.FileSystemはシェルより下層の操作となるため、そのように失敗する。
ファイル操作に関してはSHFileOperationに限らずシェルの機能を使えばいけるはず。
510 :
485 :2008/01/17(木) 07:30:59
>>507-509 ああ、こんなに早く多くの明解なご指導、感謝に堪えません。
Shell、IShellFolder、DeviceIoControl これらにトライしてみます!
ありがとうございました!
質問です。 SqlDataReaderからデータを取得するとき、途中で安全に中断するにはどういうやり方が好ましいでしょうか?
電源ボタンを長押しし、そっと目を閉じる。
コントロール配列がまんどくさすぎる!!!!!!!!! VB6以前のように、簡単にならんの? マクロとか駆使すればVB6みたいに出来るかな? 簡単に実装できるマクロとか、どこかに落ちてないでしょうか・・・? 自分で作るしかないかな?
またはじまった
516 :
デフォルトの名無しさん :2008/01/18(金) 17:13:12
>>514 コントロール配列つくって何がしたいのさ?
俺にもそう思っていた時がありました。 AddHandler ステートメントの存在を知るまでは。
AddHandlerでいちいちイベントつくるのめんどくせぇー
AddHandlerの面白さが解らないなんてVB.NETの半分を損してるよ。
520 :
514 :2008/01/18(金) 17:46:11
>>519 まぢですかぁーっ!?
何か面白いワザがあるのだろうか・・・?
ただひたすら同じイベントに関連付けるだけじゃないの・・・?
とりあえずコレクションにして、
ちまちま作成してるんですが、
あまりにもめんどくさいので、
叫んでしまいました。
違うタイプのコントロールを、
同じ配列にしたりできたりするのは、便利だとはおもうが、
そんなことするのは稀だ。
同一グループボックス内に2個のラジオボタンを配置しました。 このときのラジオボタンのCheckedプロパティを アプリケーション設定に保存するにはどうすればよいでしょうか? 各々のラジオボタンのプロパティを保存するようにすると、動作に不具合が生じます。 あるサイトには一方のラジオボタンのプロパティのみを保存するように とありましたので試してみたところ、確かに正常に動作するようになるのですが、 もう一方のラジオボタンのCheckedプロパティがTrueのときに終了すると、 次回起動時は双方のラジオボタンのCheckedプロパティがFalseとなってしまいます。 常套的な手段があるようでしたら教えてください。
>>521 trueになってるラジオがどれであるか
これを保存(テキトーに番号かなんかで)
起動時には保存されている値に該当するラジオをtrueにする
以上
>>521 GroupBox1 に張られているのが RadioButton のみって前提なら
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Name As String = GetSetting("MyApp", "GroupBox1", "Control", "")
If (Name = "") Then
Exit Sub
End If
Me.SuspendLayout()
For Each Control As RadioButton In GroupBox1.Controls()
If (Name = Control.Name) Then
Control.Checked = True
Exit For
End If
Next
Me.ResumeLayout(False)
End Sub
Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
For Each Control As RadioButton In GroupBox1.Controls()
If (Control.Checked) Then
SaveSetting("MyApp", "GroupBox1", "Control", Control.Name)
Exit For
End If
Next
End Sub
でおk
>>521 考え方として一番シンプルなのは、UIが表現している設定を
プライベートなプロパティとして持つことだと思うよ。例えばこんな感じ。
Private Property YesSelected() As Boolean
Get
Return radYes.Checked
End Get
Set(ByVal value As Boolean)
If value Then
radYes.Checked = True
Else
radNo.Checked = True
End If
End Set
End Property
でこれをMy.Settingなり何なりをつかって保存/復元すればいいわけだ。
あるいは手間を惜しまないなら、ラジオボタンの部分だけをカスタムコントロールにして
そいつに上に書いたようなプロパティを持たせればもっと分かりやすい。
525 :
521 :2008/01/18(金) 20:34:12
>>522-524 どうもありがとうございます。とても参考になりました。
PropertyBindingを設定せず、INIファイルに書き出す要領でアプリケーション設定に保存しようと思います。
526 :
デフォルトの名無しさん :2008/01/19(土) 00:15:16
iniwwwwwwwwwww
>>516 クラスの上下関係やら壁をぶち破って、コントロールのプロパティを弄りたいのだと。
VB6で書いた小生の駄作プログラムがまさにそんな状況だったけど、然るべき
ハンドラを介せば、汚い横紙破りはしなくていい筈だ。
VB脳にOOPは無理じゃないかと思うときがある
まだコントロール配列とか言ってる人がいるのか。。。 まあ用途にもよるのは確かだろうけど、普通はコントロール配列のように ユーザーによって操作されたコントロールをインデックスで識別したい場面っていうのは そんなに多いはずがないと思うんで、たぶん基本的に何か勘違いした発想をしてるんだろうなあ。 どうでもいいが上の方でAddHandler使えとか言ってる人がいたが、 それはコントロール配列の代替方法と直接関係ないだろう。 ひとつのメソッドに複数のオブジェクトのイベントを紐付けするのはHandles句でもできる。 それにAddHandler使おうが、肝心のインデックスによる操作されたコントロールの識別が できないことに変わりはない。 どうしてもそんなアナクロなことがしたければデザイナでTagに数字でも入れておいて Dim index as Integer = CInt(DirectCast(sender, TextBox).Tag) みたいにするのかなあ。 あと、VB.NETにも互換ライブラリに一応コントロール配列ってあるんだよね確か。 コントロール配列を使ってるVB6のコードを変換すると見られたはず。
そもそもコントロール配列が必要になる理由がわからん… なに作ってんの?
なんだろう、大量のcheckboxを番号で管理してるとか・・・
そういう人って「マインスイーパー作れ」って言われたら迷わずボタン並べ始めるんだろうな
いやVB6な人の中には、同じ種類のコントロールが2つ以上存在すると 意味なくコントロール配列にしたがる人がいるんだよたぶん
>>533 > 同じ種類のコントロール
別に,「CommandButtonがいっぱいある」,から「CommandButtonをコントロール配列化しよう」とは思わない.
「同じ用途(同じ目的)のコントロールがいっぱいある」,から「処理を一元管理しよう」とするとコントロール配列化が妥当という気になってくる.
それでもあんまりそういう場面に出くわさないんだけどな.
これがVB.NETであっても,「同じ用途のコントロールを一元管理しよう」という要求は依然としてあるから,
コントロールの配列とかコントロールの集合とか,またはイベントハンドラの複数のバインディングとかにしわ寄せ行ってる感じがするな.
VB.NETは共通言語基盤上でほかの言語ともお話する必要があるから,言語としてコントロール配列のサポートが無くなったと思っている.
コントロール配列って.netでやるならコントロールの配列作ればいいだけじゃね?
だが、そのコントロールの配列を いちいち作るのがマンドクセー それがVB6厨 既存コントロールを継承してカスタムコントロールつくって、 コレクションつくるのも、まんどくせー それがVB6厨
Controls("textBox" + i)よりはコントロール配列の方がマシな気はしないでもない もっと綺麗な方法はいくらでもあるのはわかってるけど
538 :
デフォルトの名無しさん :2008/01/19(土) 14:03:49
新規Zipフォルダの作成方法について教えてください。 エクスプローラでは新規ファイルの作成でZipフォルダが作れました。 これと同じことをしたい場合、レジストリでShellNewをみてみると、そこには Dataが並んでいました。 HKEY_CLASSES_ROOT\.zip\CompressedFolder\ShellNew これのDataの値はREG_BINARY型だったため、バイナリファイルを作成して そこにその値を書き込んで保存しましたが、Zipフォルダにはなりませんでした。 作成する方法が知りたいのですが、何卒よろしくお願いします。
>>538 タダのZipファイルだからZipファイル扱えるライブラリを使うとか,
ためしに作成してバイナリエディタで見て同じバイト配列を書き込むようにするとかでいいと思うよ
542 :
デフォルトの名無しさん :2008/01/19(土) 17:08:22
>>539-541 お世話になります!!
>>541 ・・・そうでした。すみません。もしかしてそうかなと思いつつソース見直しつつ
おりました折、お答えくださったのを見て今試してみました、結果はバッチシ
ですた。すんませんです。助かりました、まことにどうもでした!!
ググってみるとZipfldr.dll などのファイル名が出ていたのでそれ使って
どうこうするのかと思ったりもしてましたらそういうことではなくて助かりました。
Zip がこれでできるということは、、このShellNewのDataがある拡張子の
ファイルやフォルダはすべてこれと同じようにして作成可能と考えてよい
でしょうか。
VB2008 EEの自動保存を解除する方法を教えてください ユーザー設定にもオプションにもそのようなものが見つかりません
俺はVS2005スタンダードだから、2008EEでも同じかはわからないけど、ツール - オプションの全ての設定を表示にチェック入れた? チェック入れたら、環境の自動バックアップでソースコードの自動バックアップしないようにできるけど。 2008からは変わったのかな…。
545 :
543 :2008/01/19(土) 18:28:04
>>544 > 全ての設定を表示にチェック入れた?
入れてませんでした チェックしたら自動バックアップの項目が出てきました
これで自動保存を恐れることなく色々いじれます
単純ミスでした ありがとうございます
546 :
デフォルトの名無しさん :2008/01/20(日) 19:00:17
[DataDefモジュール] (グローバル変数宣言部) Public Sub InitializeData() この中で色々データの初期化を行う End Sub [MainFormモジュール(ユーザフォーム)] Private Sub MainForm_Activate() ●DataDef.InitializeData End Sub Private Sub MainForm_Initialize() ●DataDef.InitializeData End Sub F5でデバッグを開始するとブレークを張ったMainForm_Activate()の中も MainForm_Initialize()中でも停止せず、どうやらプロシージャ内に入ってないみたいなんですが、 ユーザフォームが起動した時に最初に行う処理はユーザフォームモジュールの どのプロシージャにあるのでしょうか?
Win32APIスレで訊いていたのですが、
http://pc11.2ch.net/test/read.cgi/tech/1199514664/510 ちょっと教えていただけませんでした。もしご存知の方いらっしゃいましたらご指導をお願いします。
現在ファイルのプロパティを表示するために ShellExecuteEx を使っていました。そのとき、
通常のファイルやフォルダの場合ではOKだったのですが、たとえばブリーフケースのような特殊
なフォルダの場合、Explorer ではそれ用の専用のタブも追加されてプロパティダイアログが表示
されていました。それと同じように表示するためには、構造体 ShellExecuteInfo のメンバを
どのように指定すればよいでしょうか?現在のものはこれでした。
Dim info As New NativeMethods.SHELLEXECUTEINFO
With info
.cbSize = Marshal.SizeOf(info)
.fMask = NativeMethods.SEE_MASK_NOCLOSEPROCESS Or _
NativeMethods.SEE_MASK_INVOKEIDLIST Or _
NativeMethods.SEE_MASK_FLAG_NO_UI
.hWnd = Operation.hWndOfAppWindow
.lpFile = FilePath
.lpVerb = "properties"
.lpParameters = "\0"
.lpDirectory = "\0"
.nShow = 0
.hInstApp = IntPtr.Zero
.lpIDList = IntPtr.Zero
.lpClass = "\0"
.hkeyClass = IntPtr.Zero
.dwHotKey = 0
.hIcon = IntPtr.Zero
.hProcess = IntPtr.Zero
End With
この他に指定が必要な項目と値を知りたく、ご指導をお願いします!
とりあえずSEE_MASK_NOCLOSEPROCESS と0とIntPtr.Zeroとヌル文字は設定する必要ないだろ lpIDList試してみたら?
549 :
デフォルトの名無しさん :2008/01/20(日) 22:55:09
>>548 ご指導、さっそくありがとうございます!
>lpIDList
まずはこれについてググってみることにします。
550 :
デフォルトの名無しさん :2008/01/21(月) 13:57:47
コンボボックスを配置したMainFormと、 処理状況を表示するためのプログレスバーを配置したサブフォームがあります。 サブフォームのBackgroundWorkerで時間のかかる処理を行い、 そこで取得した値を下記のようにコンボボックスに追加したいのですが、 追加できません。 MainForm.ComboBox.Items.Add(value) 他スレッドからはコントロールを操作することはできないのでしょうか? 環境:Win XP+VB2005EE
>>550 >他スレッドからはコントロールを操作することはできないのでしょうか?
出来ない。
UIスレッド以外からUIをいじる場合はControl.Invokeを使う。
途中経過の表示などにはBackgroundWorker.ProgressChangedも使える。
553 :
550 :2008/01/21(月) 14:36:19
>>552 Control.Invokeですね。
さっそく調べて実装したいと思います。
また「UIスレッド」という言葉を知らず、ググることすらできませんでした。
本当に助かりました。ありがとうございます。
554 :
デフォルトの名無しさん :2008/01/21(月) 16:56:21
PictureBoxやLabelのimageプロパティにgifアニメを設定すると、表示はされるのですがカクカク表示されてしまいます。 スムーズにアニメを表示させるにはどのようにしたらよいのでしょうか?
>>554 強制的にRefreshしてやれば良いんじゃないかな?
>>554 コマ送り状態になるって意味?
フツーはそんな風にならんだろ。
コマ送り状態になるとしたら、PCのスペックがよほどしょぼいか、あるいは
UIスレッドにビジーループ的な重い処理を書いているか。
前者の場合処置なし。
後者の場合は重い処理はフリースレッドで実行するようにするか、あるいは
タイマでもつかって処理を分割して少しづつ実行するようにする。
557 :
554 :2008/01/22(火) 00:19:08
>>537 けきょくそれしか手っ取り早く書ける方法がない。
所詮VBなんてさっさとコードがつくれてナンボのもんじゃ。
>>558 自分の頭の悪さをツールのせいにするなよw
ここでも何度も出てる「コントロール配列の意義」すら理解できないお前さんが
それを言うのはただのお笑いw
ドライブの物理シリアルが取得したいけどできません。どうすれば取得できますか? WMIのWin32_DriveDiskのSerialNumberを取得してみたのですが、失敗します DeviceIoControlでも失敗します…ボリュームシリアルしか取得できません
フォームの背景だけを半透明にしたいのですが、 opacityプロパティだと、フォーム上のボタンなどの コントロールも半透明になってしまいます。 コントロールはそのままで、 フォームの背景だけを半透明にすることはできますか?
562 :
デフォルトの名無しさん :2008/01/22(火) 18:11:34
質問させてください。 VBにて Everyoneのアクセス許可がフルコントロールのフォルダを作成 あるいは 既存フォルダのEveryoneのアクセス許可をフルコントロールに変更 したいのですが、可能でしょうか? API等を利用する方法でも結構です。
cacls.exe叩いたら?
>>561 >>2 の「どぼん!のVB道」のTipsにフォームの表示に関するのが何個もあるから参考になるよ。
いや
>>561 の言ってる事は無理筋。
っていうか、2ch内しかも同じ板ででマルチポストしたって無意味だろ
どのスレも見てる奴は一緒なんだからw
566 :
562 :2008/01/22(火) 18:34:27
>>563 cacls.exeで調べてみます。
ありがとうございます。
567 :
561 :2008/01/22(火) 18:38:43
1.フォーム全部を半透明 2.フォームの特定の色を透過 ってのはできたんだけど、 1だとボタンまで半透明になる。 2だとフォーム上のコントロールは透過しないけど、 完全に透過してしまうし、色指定が必要 描き忘れたけど、そのフォームには BackGroundImageで背景画像が表示されてる場合もあります。 その場合、その背景画像を半透明にし、 なおかつフォーム上のコントロールは透過しないようにしたいです・・・
>>567 半透明フォームをオーナーにして
コントロールと同じ大きさのフォームを重ねるというのは?
いろいろ不都合が出そうではあるが。
VBやってる人数が知りたい 今すぐ運子しろ
570 :
561 :2008/01/22(火) 19:29:54
>>568 なんというムリヤリw
出来そうですがw
フォームの移動時にいっしょに移動する処理とか
大変そうw
親フォームと、コントロールに見せかけた子フォームを
ひとまとめにクラス化していけば
なんとかなりそうだけど、
かなりマニアックな処理のヨカンw
Console.WriteLine("雪ですよ?")
>>570 背景画像のコントロール部分のところ透明色以外の色で塗りつぶせばいいだけだと思うが。
>>572 それでは完全に透明になるから嫌らしい。
その手の質問は何度か見たけどマトモに動かすには VistaでDwm〜系のAPIでやるしかないんじゃね
だから無理筋なんだよね っていうかそんなUIが意味をもつ場面が想像できないよ。 そんなアタック25のラストクイズみたいなUI嬉しいか?
う、う、嬉しいいいいいいいいいい!!
誤爆
578 :
デフォルトの名無しさん :2008/01/23(水) 21:44:50
また速度パフォーマンスの件なのですが、教えていただけますでしょうか、 エクスプローラはMFCやWin32APIで作られているのだと思いますが、 たとえば、C:\Windows\I386 というフォルダを見てみるとそこには 5700 もの ファイルが存在していましたが、そのオープン(ファイルListViewへの表示)は 非常に高速で、ものの1秒もかかるかどうかぐらい高速に表示されていました。 ところが、これをVB.NETのプログラムで同等の表示項目の情報をかき集めて 同様にListViewに表示しようとすると、 自分がトライとした限りでは10秒以上かかっていました。これはやり方が悪い ためというのが大半の理由と考えるべきなのかどうかを知りたく思いました。 エクスプローラと同じほどの短い時間で出すには、単なるListコントロールに ファイルのファイル名の情報だけを単純にAddしてやるだけで精一杯で、その他 の更新日時やサイズ、ファイルの属性に関わる情報、アイコン等をすべてListView に表示する場合は上記のようにかなり時間がかかる処理となるようでした。 こうした極端な差が出た原因は私のアルゴリズムの詰めが甘いせいをまずは 疑うべきでしょうか、それとも .NETでのListViewを使ってのAddでの表示では やむ得ないパフォーマンスと考えてもよいものでしょうか。よろしければご指南 頂ければありがたく存じます。
>>578 エクスプローラはベタにリストを表示してるだけで仮想化みたいな
高速化のためのテクニックは何も使ってないでしょ。
例えばIEの一時ファイルのフォルダをDetail表示で見てみ?
それにたった5700ポッチのアイテムじゃベタに表示してもストレス感じないのは
当たり前だと思うけど。
LVS_OWNERDATAなわけだが
↑ owatadata かと思ったw この前、作ったフォームで困ってることがある。 datetimepicker オブジェクトを定義、AddHandlerして、処理コードをバインドして おいた。 フォームを表示後、当該オブジェクトをクリックするとカレンダーを呼び 出されるわな。 そこで、月移動ボタンを押すと、なぜかイベントがクリアしないで、 繰り返し処理が呼ばれてしまう。 さて困った。 中でMsgboxを呼んだりしたのが悪いのかもしれないんだが、いい方法はないもんか。
日本語でおk
583 :
デフォルトの名無しさん :2008/01/24(木) 12:28:29
>>579-580 レスどうもありがとうございました。「仮想化」「仮想化」など調べてみました。
これらはListViewのOwenerDrawとはまた別なことなのでしょうか?
確かにたくさんのItemを載せると表示が遅くなるということはかかれてありました。
もう少し調べてみます。ありがとうございました。
>>583 (訂正)>「仮想化」「仮想化」など->「仮想化」「LVS_OWNERDATA」など
つかListView.BeginUpdateしてないだけじゃね?
.netのListViewの実装は糞だな 一つのアイテムの文字色変えると全部再描画しやがる
は?
は?じゃないが
ひ?
VB.NETのアプリケーションはソースコード 丸見え!丸見え!パンツ丸見え! だと聞いたのですがこれって商用アプリケーションは作成できないということですか?
ソースコードはパンツをはいていません
. ィ .._ .......、._ _ /:/l! :~""''.>゙' "~ ,、、''‐'、| _ ゙、'、::::::ノ:::::::_,.-=. _〜:、 /_.}'':, ``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ またまたご冗談を ,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:' ノ゙ノブ " .!-'",/ `'-‐'') /\ `/ でノ-〈 .-''~ >'゙:: ‐'"゙./ ヽ.,' ~ / //::::: ', / ,:'゙
商用でも作成すりゃあいいじゃん。 .netは簡単にソース見えるけど、Cで書かれたソフトとかでも、どういう風になってるのかはわかると思うが。 難易度の違いじゃね。 結局最後はコンピュータが読み込んで実行するんだから、構造がわからないわけがない。
594 :
デフォルトの名無しさん :2008/01/25(金) 15:55:44
My.Settings.Reloadでアプリケーション設定のすべての項目を初期化することができますが、 ある特定の項目のみを永続ストレージの値から初期化する方法はないのでしょうか?
>>593 難易度チガウ!難易度チガウ!
お前のかーちゃんシューティングゲームでEasyがないってこの前駅前のゲーセンでキレテタゾっぉっぉっぉっぉ
C++でも専門の解析ツールを使うと結構正確に逆コンパイルしてくれる。 標準関数だけじゃなくVC+WindowsSDKの組み合わせだと 部分的ではあるがSDKのマクロやSTLまで再現してくれてて驚いた。 ちなみにC++のバイナリを難読化するツールも存在する。 どの世界でもその辺の事情は一緒だな。
タイマを使いボタンが一定時間で消えたり現れたりするモノを作ってみようと書きました Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Label1.Text = DateTime.Now Button1.Visible = True = Not Button1.Visible = True End Sub > Button1.Visible = True = Not Button1.Visible = True これ文法的にはどうなんでしょうか 普通に動きました イコールが3つあってなんか変な感じがするんですが他にスマートな書き方ありますか
何がスマートなのかわからんけど一般的にはselectかif使うんじゃないか 大したコードじゃないし動けばいいじゃん
普通にこれじゃいかんの? Button1.Visible = Not Button1.Visible
後ろのイコール以降いらんだろって話
select文
Dim x As Boolean
Select Case x = Button1.Visible
Case x = True
Button1.Visible = False
Case x = False
Button1.Visible = True
End Select
if文
Dim x As Boolean
If Button1.Visible = True Then
Button1.Visible = False
Else
Button1.Visible = True
End If
かな
>>599 > Button1.Visible = Not Button1.Visible
=trueが無くても動くことは知りませんでした
Button1.Visible と書けばその値は内部的に調べてくれると言う認識でしょうか
とても為になりました 見た目でも分かりやすいです
ありがとうございました
>>601 VB脳丸出しですね。
Dim b As Boolean
b = (1 = 3) 'b = False
b = Button1.Visible
論理型なら何でも代入できる。
代入演算子と比較演算子の区別をしっかりつけられるようにがんばりましょう。
あと、組み込み型とクラス、オブジェクトについてもっと理解しましょう。
VB脳以前にどうしようもなく初心者なんだろw 初心者相手に鬼の首とったようなこと言って楽しいのか君はw
VB脳なのか?
VB脳かどうかってこだわるとこ?
VBしかできないが、悪いか
VB.NETに未来あんの?
あると思う
609 :
デフォルトの名無しさん :2008/01/26(土) 20:06:07
>>607 ねーよばか
こんだけVBプログラマ人口減ってるのに天下のマイク口ソフ卜がご丁寧に救ってくれるとでも思うか?
C#はまあ標準化されてるからきっとVBはこのまま朽ちていきC#がメインになるな
なるなるなーるな
C#とVBって何が違うの?
名前
きっとWebプログラムで盛り返すはず・・・ きっと・・・
613 :
デフォルトの名無しさん :2008/01/26(土) 22:54:33
まだVB.NETには最高にGUIが組みやすいというメリットが残されているもののC#には何もないでしょ
>>613 ワケの分からんこというなよw
んなのC#と何も違わないっつーの。
>>609 バカはお前だ
C#でRADすんのかよw
エクセルとかのマクロもVBベースだし(C#も使えるようになるらしいが)早々マイクロソフトがVBを手放すとは思えないなあ。 どうせ中間言語の.netなんだから、VBもC#も共存でいいんじゃないの? 無理やりなくす必要はないでしょ。 人口減ったつっても、C#よりはまだ多かったと思うが。 とにかく.NETのC#は中級者以上、VBは初心者から入れるっていうので住み分ければいいじゃん。
>>618 マジかよー・・・。
今までVB.netで突っ走ってきたけど、C#に移行するかな・・・。
同じ.netだし、VB書ければなんとかなるよな・・・。
今度C#の参考書買ってみよう。。
VBA と VB は別物だぜ?
移行ってそんな大げさなもんか?w クラスライブラリは完全に一緒だし、反復子や匿名メソッドなどC#にしかない 機能があるにしろ文法の違いなんて1日あればだいたい押さえられるでしょ
624 :
デフォルトの名無しさん :2008/01/27(日) 01:28:37
オブジェクトブラウザで見れば?
>>623 たしかにそうなんだけど、C系特有の簡略記法が独特で乱用して書かれてると
暗号みたいな記述で嫌気するときあるんではと思ったり・・・してる。
>>625 コードよく見たらわかることだった…
ありがとうございますいません
mshtml.HTMLDocumentメンバでした
628 :
デフォルトの名無しさん :2008/01/27(日) 11:28:07
あのーあんのーあのおおー O'は? みんなO'のこと忘れてnine?
フォームを フォーム1(me.hide)→フォーム2(me.hide)→フォーム3 ってhideで隠してから新しいフォームをあけたとき フォーム3を クローズしたときにフォーム2も同時にクローズして フォーム1に行くって事はできないのですか?
そうするコードを書けばいいじゃん。 煽りじゃなく、そのためにキミのような人間(つまりプログラマ)がいるんだろ? いったい何が聞きたいんだよ
631 :
デフォルトの名無しさん :2008/01/27(日) 16:29:58
ちょっと質問。 .NETFrameworkに対して、描画速度を改善した改良済みのFormクラス というのを作って追加コンパイルして新しいFrameworkのバージョンを 作ってくれるようなことはどこかの会社でやっているでしょうか? それとも、こういうこと自体不可能なことなのでしょうか。
そもそもForm自身が描画しているものってそう多くはないし、 そんなに遅いとも思えないんですが。。 Windows Formが「重い」のはコントロールの生成が「重い」だけなんじゃないの? それが簡単に改良できるようなことならMS自身がとっくにやってるだろ、 と思っちゃうんですけどどうかな
WPFって、改良済みFormクラス、といえなくもない?
MONOのGTK#
WPFは原理的には3DゲームのGUIみたいなもん WinFormsとは全然違うよ
現在のFormsと同じ扱いで使用できて、名前を若干変えたもの たとえば、FormsExみたいなものを作ってFrameworkに追加して くれたらだいぶ違ってくると思うのです。いまのままだとリサイズで ふにゃふにゃぴろぴろぴろろろと後を引くようにぴらぴらが残る ようになって、ネイティブアプリとはっきり違うことがわかるのです。 これをなんとかしてほしい、と。
描画の機能部分だけ高速にしたものにしてくれればいいだけなんだけど それはめちゃくちゃ難しいのでしょうか。
MS様の答え:「高速なPCに買い換えろ。以上!」
ダブルバッファオンにして全部OnPaintをオーバーライドして自前で描画しろハゲ
641 :
デフォルトの名無しさん :2008/01/27(日) 19:31:13
さすが富豪グラミング(笑) 開発・動作共に高スペック要求のM$
そんなに速くしたかったらDirect3D使ってコントロールとか全部自前で描いちゃえ それをやってるのがWPFなわけだけど
>>640 そうかもしれないけど、Formsにあるコントロール全部そうやって自分で描画するの?
>>642 どうやって基本クラスを作れって話なんでしょう。でもそれできるんならそういう基本クラス
作って標準化してくれたらと思うのですがどうでしょうか。
MSの描き方が気に入らないなら、全部自前で描画するしかない
「重くてしょうがない」って言うヤツのほとんどがやり方に問題がある。 いったいどんなフォームなんだよ
647 :
やんてね♪ :2008/01/27(日) 22:57:26
VB.NETのLabelのフォントサイズを、「文字数」と「Labelのサイズ」に沿って変える方法知りませんか?
DataGridViewが遅い
649 :
やんてね♪ :2008/01/27(日) 23:01:31
ありがとうございます。
>>647 AutoSize = falseにして
TextChangedイベントでフォントサイズ変えれば
>>647 「文字数」と「Labelのサイズ」に沿って変える、をその通りにコードで書けばいいと思います。
文字数の数え方や、Labelのサイズの取得方はわかるでしょう。
プロポーショナルフォントのことを考えれば、文字数より文字列全体の幅を計算したほうがよいでしょうが。
MeasureStringあたりで検索してみてくだしゃんせ。
Thank you!
653 :
デフォルトの名無しさん :2008/01/29(火) 18:41:41
暗号化、複合化についての質問です。 テキストファイルを一旦ハッシュテーブルにセットしてからファイルに保存というシステムを作っているのですが ハッシュテーブルからファイルの所で暗号化、複合化したいと考えています。 それでなんですが、下のコードで試したところ、矢印の所で止まってしまいます。 CSV形式で保存しています。 暗号化は上手くいくのですが、複合化がうまくいきません。 暗号化と少ししか違わないコードなのにさっぱりわかりません。 誰か助けて下さい・・・ line = reader.read(ちょっとど忘れしました。。。1行ずつ読むという意味です。) Dim source As Byte() = Encoding.Unicode.GetBytes(line) Dim des As DESCryptoServiceProvider = New DESCryptoServiceProvider Dim ms As MemoryStream = New MemoryStream Dim cs As CryptoStream = New CryptoStream(ms, des.CreateDecryptor(DesKey, DesIV), CryptoStreamMode.Write) cs.Write(source, 0, source.Length) →cs.Close() Dim destination As Byte() = ms.ToArray() ms.Close() hukugouka = Encoding.Unicode.GetString(destination)
なんで、DES暗号化されてるはずのsourceに、行単位とかがありえるの?、 暗号化されてるなら、Unicode.GetBytesも意味不明だし...
655 :
デフォルトの名無しさん :2008/01/29(火) 19:17:19
VB2008です。 SendKeys.Send("^v") これうごきません・・・ なんでですか? WebBrowserの中身をリフレッシュしたいのでF5したいです。 ほかにいい方法ありますか?
656 :
デフォルトの名無しさん :2008/01/29(火) 19:32:56
携帯から失礼します メッセンジャーを作っているのですが、送信相手を変更する時はTabControlを使ってタブで変更するようにしています。 こちらから新しく他の人にメッセージを送る際名前をクリックすると新しくタブが開きますが、現在元々開いていた人のタブがそのまま表示されている状態です それをRegnessemのように自動的に新しく送ろうとしている人のタブへ変更するようなコマンドはありますでしょうか?
TabControl1.SelectTabで選択できない?
>>655 VB6のときにセンドキーで対象にキーが贈られないことがありました、
私の場合はセンドキー命令が指定位置に飛んでいなかったのが原因だったので
この様にフォーカスを当ててからセンドキーを送って対処しました
Retvalue = SetForegroundWindow(HH)
' もし発見できなかったら見過ごせ
If Not HH = "" Then
'DOSへのコマンド放り投げ
Retvalue = SetActiveWindow(HH): SendKeys CStr("%( )")
Retvalue = SetActiveWindow(HH): SendKeys CStr("E")
Retvalue = SetActiveWindow(HH): SendKeys CStr("P")
Retvalue = SetActiveWindow(HH): SendKeys CStr("{ENTER}")
DoEvents
End If
>>653 何で暗号化がうまく行ってるって分かるんだよ
661 :
デフォルトの名無しさん :2008/01/29(火) 20:51:28
いろいろやってるのですが、動きません 簡単なソースかいてもらえますか? VB2008です。 SendKeys.Send("^v") これうごきません・・・
>>661 その前に、なんでF5をシミュレートしたいのに、SendKeys.Send("^v")なのかを教えてくれ。
663 :
デフォルトの名無しさん :2008/01/29(火) 21:11:01
SendKeys.Send("^v") は Ctrl+V はわかっています。 F5の場合は("{F5}") でしょうか? またCtrl + F の場合は("^F") ですか? また、動きませんよろしくお願いします。
^v"
なんご一行ごとに改行いれるの?
加藤の号泣動画って、もう消されてるよね。 > ようつべ
SetForegroundWindowするくらいなら WM_APPCOMMAND/APPCOMMAND_BROWSER_REFRESHでも送ったら
>>653 暗号化した文字列の末尾が欠けたりすると、戻らないよ。
CAPICOMの仕様をよく読め。
つかEncoding.Unicode.GetBytesしてる時点でアウトだし こうなると暗号化ですでにアウトの予感
670 :
668 :2008/01/30(水) 08:03:41
そうなんだ? たしかVB6で POP before SMTP対応の、 警告メール送信プログラム組んだとき、生パスワードを.iniに 入れておくのは忍びなかったんで、使ったとき文字長の問題に 逢着して小1時間ぐらい悩んだけど、使えるようになったよ。
671 :
デフォルトの名無しさん :2008/01/30(水) 10:10:59
VB2008使ってます。 ボタンクリック時に指定したフォルダを削除するツールなんですが (抜粋) 'C:\tempが無ければ終了 If My.Computer.FileSystem.DirectoryExists("C:\temp") = False Then MessageBox.Show("C:\tempフォルダが存在しません。") Exit Sub End If 保存した後でデバッグ開始すると↑が出てしまいます。 保存する前は出ないのですが原因わかる方いたら教えてください。 あと、 My.Computer.FileSystem.DeleteDirectory("C:\temp") 引数の数を受け付けるDeleteDirectoryがないため、オーバーロードの解決に失敗しました。 というエラーが出るのですがよく分かりません。どうすればいいでしょうか?
672 :
デフォルトの名無しさん :2008/01/30(水) 10:17:44
673 :
671 :2008/01/30(水) 10:21:12
>672 C:\tempフォルダが存在しません。 のメッセージボックスが出ます。 保存する前は出ません。
保存って何を保存?? C:\tempは存在しているけど、メッセージが出るってこと?
675 :
671 :2008/01/30(水) 10:33:04
>674 言葉足らずですみません。 プロジェクトの全保存です。 C:\tempは存在しているけど、メッセージが出ます。
>>675 'フォルダの存在確認
If System.IO.Directory.Exists("C:\temp") = False Then
Call MessageBox.Show("C:\tempフォルダが存在しません")
End If
'指定したフォルダ及び中身を削除
Call System.IO.Directory.Delete("C:\temp", True)
これだとどうなる?
基本的にMy.Computer名前空間は使わない方がいいと思うぞ。
まあ一応アドバイスとして、
>>671 のコードに間違いはないのに問題だけが起こっているならば、
リビルドして解決する可能性もある。
>>676 > 基本的にMy.Computer名前空間は使わない方がいいと思うぞ。
なんでなんで?
678 :
デフォルトの名無しさん :2008/01/30(水) 15:23:15
頼りすぎて馬鹿になるから('A`)w
馬鹿でもいいじゃない にんげんだもの
680 :
デフォルトの名無しさん :2008/01/30(水) 17:24:55
すみません、これについて教えてください。.NETのコントロールには そのほとんどすべてにハッシュコードという暗号生成してくれるメンバー が付属していますが、これは何をするのに利用するものでしょうか? これらの暗号というのはそのPCの固有のIDなどを生成するのに使用 できるものと考えていいのでしょうか?よろしくお願い致します。
>>680 コレクションで使う。Dictionary系のキーを使う奴。
ハッシュは暗号じゃない
> これらの暗号というのはそのPCの固有のIDなどを生成するのに使用 できるものと考えていいのでしょうか?
暗号じゃ(ry
>>682 そしてPC固有というよりオブジェクト固有
あらゆる型についてるだろ
685 :
デフォルトの名無しさん :2008/01/30(水) 18:35:39
>>681-684 レスありがとうございます。暗号ではなく、コレクションに載せたときに
何かの目的で使うということのようなのですね。実際には自分のプログラム
のコード上ではどのような形で使うのでしょう。
それとPC固有のIDがほしい場合にはどのあたりのデータを採用して
作成するものでしょうか。暗号かと思っていましてこれらが使えるのかと
思ってしまいました。よろしければこれらについても教えてください。
686 :
デフォルトの名無しさん :2008/01/30(水) 18:52:34
windowsフォームについての質問です。 3つの画面を作りたいのですが、 その画面3つに共通してある部品(ラベル・テキストボックスなど)が約60%で のこりの部分もほとんど同じなので、できれば共通の部品を使いたいと思い 共通部分だけ作ったフォームを継承してカスタマイズしようと思ったのですが うまくいきませんでした。 途中まで作ったフォームを継承してデザイナで続きを作るということは 不可能なのでしょうか? それとも、他の部分がまずかっただけで部分だけ作ったフォームの継承は可能ですか?
>685 よくあるのはMACアドレスとか、コンピュータSIDとかだか。
>>686 ユーザコントロールにまとめればいいんでね?
継承元のフォームをもしMustInheritにしてるなら それを外してみな
>>683 そういえば、uuidgen.exe ってどうなった?
692 :
モンチ :2008/01/30(水) 20:32:25
VB2005〜 でPPPOE接続をしたいのですが、方法がわかりません。 よろしくお願いします。
こちらこそよろしくです m(__)mペコ
ぶぶ漬け出しましょうか?
>>692 方法がわからないんじゃどうしようもないな
お疲れ様
VB2005〜 でよろしくお願いしたいのですが、方法がわかりません。 PPPOEでお願いします。
>>689 ごめんなさい、
どうすればいいのかよくわかりません。
>>690 はずしてみたら無事表示されました。
逆にMustInheritでは作れないということですね。
ありがとうございます。
698 :
デフォルトの名無しさん :2008/01/30(水) 22:07:52
>>686-687 再びありがとうございます。教えて頂いたコンピュータSIDについて調べて
みましたところ、もしかしたらこれは System.Security.Principal 名前空間
の何かを使うと取得することができるものなのでしょうか。たとえば、現在の
User名からそのUserのアカウントを取得して、その値からこのSecurityIdentifier
プロパティか何かを使って求めることができるとか、でしょうか?よろしくお願いします。
699 :
671 :2008/01/30(水) 22:48:20
遅くなりましたが、無事解決しました。 実行ファイルをネットワークドライブに置いていたのがいけなかったようで、 Cドライブに移したらC:\tempを認識するようになりました。 完全に盲点で、お手数をおかけしました。 >引数の数を受け付けるDeleteDirectoryがないため〜 は仰るとおりでした、ありがとうございました。
700 :
698 :2008/01/30(水) 23:49:46
>>698 のSecurity.PrincipalのNTAcountクラスあたりから調べて
みるとわかりそうに思いました。ありがとうございました!!
お世話になっております。 VS2003で、Accessibilityに参照設定をしているのですが、ComboBoxのプロパティにAccessibilityObjectが現れません。 やりたいことは、ComboBoxのTextChangedイベントの不具合回避です。
702 :
デフォルトの名無しさん :2008/01/31(木) 15:35:12
ネットワーク関係でいろいろと実験しながら勉強していこうととしたら WindowsServer2008などを自分で購入してインストールしてそこを ドメイン設定してプログラムからアクセスする練習しないといけないでしょうか? .NETのヘルプマニュアルみてオブジェクトの概念全部つかめればいいのですが、 やっぱりそういう頭だけで実用化ソフトを組めるようになるのは難しいですよね? 結構なハードルになるでしょうか?
ネットワーク関係って幅広すぎ
704 :
デフォルトの名無しさん :2008/01/31(木) 15:44:12
>>703 たとえばActivedirectory関係で、DirectoryServicesクラスの使い方とか
の関係です。たとえば、ドメイン・ユーザー・アカウントを全部列挙したいとか
だと、自分のPCだけだとLocalの登録ユーザーのだけしか出ませんよね。
そういうのを、広くネットワークで掴まえるためには、やっぱりDomainを
設定できるServerを導入して自分で実地にネットワーク構成を張って
一つ一つ試してみていかないとだめなのかな、と。
やっぱりそういうことになるのでしょうか?
705 :
702 :2008/01/31(木) 15:52:56
706 :
デフォルトの名無しさん :2008/01/31(木) 15:53:12
ボタンクリックでExcelテンプレートをOpenし、値をセルにセットする処理を作っています。 (ファイルは保存せず、展開のみ) 処理自体は問題なくできたのですが、Excelテンプレート上にある図形が 展開後のシートで見えなくなってしまいます。 ただ図形自体はあるようで、図形を配置したセルをドラッグしたり、 閉じる際の保存しますかメッセージの裏で図形が点滅するように見えたりしています。 実行マシンのExcelのバグかとも思いましたが、他マシンでも同様です。 出力処理の中でExcelに対して何か指定する必要があるのでしょうか? Excel2007、テンプレートの拡張子は.xltxです。 よろしくお願いします。
>>705 開発用に使いたいならMSDNサブスクリプションだろうな。これも高いけど。
708 :
702 :2008/01/31(木) 16:20:15
>>707 現実問題として
>>704 の目的だとやはり自分で環境構築して実験していく
ようなことは必要でしょうか、なにか代用で実験できるような等価環境という
ようなものができるとうれしいです。
>>708 試用版使えば?
今2008の評価版かなんかダウンロードできるでしょ。
710 :
デフォルトの名無しさん :2008/01/31(木) 16:38:10
>>709 >試用版
なるほど!
ところで、実は今はVS2005Professional使ってました、まだよく調べてない
のですが、これって、WindowsServerのDomain機能の実用じゃなくて開発用
の機能みたいなもの含まれてたりしてましたっけ?そう都合よくはいかない
ですか。
711 :
702 :2008/01/31(木) 16:56:30
それと、もしかしてVMWareというのは、一つのPCで複数のWindowsPCを Network接続したような環境を仮想構築して互いに通信しあうみたいなこと もできるでしょうか?仮にそうだとしても、WindowsServerを購入してインストール しないといけないことには代わりはないのでしょうか・・・。
>>711 できる。
仮想MACアドレスとかも生成する。
713 :
モンチ :2008/01/31(木) 19:07:18
VB2008 か 2008 でPPPOEでの接続作業をするアプリを作りたいのですが方法がわかりません、どなたか教えてください。
714 :
デフォルトの名無しさん :2008/01/31(木) 19:10:44
>>711 ありがとうございます。Freeのものもありそうなんですね。
ところで Vertial PC 2007 とか Vertial Server 2005 とかもマイクロソフト製で
Freeで出てたんですね。これらだと仮想でWinXP ProやWin98なんかも複数
載せてシミュレートできそうなこともわかりました。
ただやっぱりDirectoryServicesの機能確認に Domain 作成して云々になると、
Server機能が必要になって14万円払って買うことになりますか、、かなりの出費!
>Vertial -> Virtual でしたすみません。><
716 :
686 :2008/01/31(木) 19:58:27
すみません、再び継承フォームについての質問です。
>>686 と同じ内容なのですが、
いったん成功したはずなのに
「パスの形式が無効です。」というエラーが出てデザイナが表示できませんでした。
コンパイルそのものは通っているみたいなのですが、
デザイナが使えないとレベルが高すぎるのでなんとかエラーを解除したいです。
このエラーについて詳しいかた、どうかお力を貸してください。
>>716 バグがないのならリビルドしたり、一旦IDEを終了すれば直ると思う。
ユーザーコントロールや継承元のコントロールが同じプロジェクト(つまり
同一のアセンブリ)に存在しているとそういう現象が起こりがち。
サーバとクライアントの接続で取得したNetworkStreamを使ってデータの送受信をしてるんだけど クライアントとサーバがそのNetworkStreamにほぼ同時にデータを書き込むとデータおかしくなっちゃうかな…? 結構でかいサイズを送受信してるんだけど、 やっぱり、サーバがクライアントに向けて送るNetworkStream、クライアントがサーバに向けて送るNetworkStreamっていう風に 別々に取得して送受信したほうがいいんだろうか…。 前、ほぼ同時に書き込むコード書いたんだけど、その時途中から変なデータになったんだけど。
>>713 何故誰からもスルーされているのか、
まずはそこから考えろカス。
で。
・何が分からないのか
・どこまで分かっているのか
・どういう仕様なのか
・現在書いてるソースの提示
このへんの詳細を示せ。
>>718 まさか「おかしくなる」「変になる」で説明できてると思ってないだろうな?
>>720 >>まさか「おかしくなる」「変になる」で説明できてると思ってないだろうな?
ほぼ同時に送信(NetworkStream.Write)してから、受信(NetworkStream.Read)すると、
半分くらいまでは確かに送信した文字列なのですが、途中から文字化けしているのです。
ほぼ同時に送信したため、どちらかが送信している最中にどちらかが上書きしてしまったのでは?と思ったのですが。
>>721 簡潔にいうと,それは書いたプログラムがおかしい.
どうおかしいかはわからない.
>>722 ということは、サーバからクライアント、クライアントからサーバ用にそれぞれNetworkStreamを取得せずとも問題ないということでよろしいのでしょうか?
>>723 そうだね.TCPって書いてないけどTCPとESPして考えると,TCPは全二重通信だから一本でOK.
725 :
デフォルトの名無しさん :2008/02/01(金) 02:40:19
すみません、教えてください、以下のようなプログラムでコンピューター名=MyPC の DirectoryEntry をすべて得ようとしたのですが、DE1.Children.SchemaFilter.Count を参照した時点で、なぜか DE1.Children には子が存在しないようでUserの一つも 参照できないようでした。 Imports System.DirectoryServices Dim DE1 as DirectoryEntry = New DirectoryEntry("WinNT://MyPC,computer") Try Dim ChildrenCount As Integer ChildrenCount = DE1.Children.SchemaFilter.Count If ChildrenCount > 0 Then For Each child As DirectoryEntry In DE1.Children Debug.Print("SchemaClassName:" + child.SchemaClassName + " Name:" + child.Name) Next child Else Debug.Print("(No Children)") End If Catch ex As Exception Debug.Print(ex.Message) End Try 確か、以前は見えたことがあったように記憶しているのですが、方法は同じだった ように思うのですが、なぜ本日やってみたら出て来ないのかわかりません。 このような書き方で問題があるでしょうか。明日また教えてください。よろしくです!
>>720 ,722,724
ありがとうございました。おかげでスッキリしました。
ちなみに、通信の方法は
>>724 さんの仰るとおり、TCPです。
727 :
かず〜る。 :2008/02/01(金) 20:16:00
WebBrowser内のHTMLに値を記入してサブミットすることはできたのですが、 別に立ち上がっているブラウザに記入してサブミットすることは可能なのでしょうか? 教えてください。 'ブラウザ内挿入+サブミット By Google [btnG q] WebBrowser2.Document.All.GetElementsByName("q")(0).InnerText = "そうにゅう♪" 'ENTER(submit送信) WebBrowser2.Document.Forms(0).InvokeMember("submit")
可能です。
ノーマルVB.NET→2003→2005と使ってきたが、VB.NET2008はどこが変わったの? 使いやすいのかな?
VB初めて3ヶ月になります、ひとつ質問させてください、 Shared Function ToRoundDown@(ByVal vValue@, ByVal iDigits As Byte) Dim vCoef As Decimal = CDec(10 ^ iDigits) If vValue < 0 Then vCoef *= -1 Return Decimal.Floor(vValue * vCoef) / vCoef End Function この関数の@はどんな意味を持つのでしょうか? 引数の型?、戻り値? この他に有用な使い方などもあったら是非教えてください
>>731 decimal型のサフィックスだったと思う
FunctionなのにAs句がないとはどう言う事だ > どうでもいいけどvb6の時代はこれ型指定文字とか言ったと思ったんだけど、 > このあたりの用語の不統一もなんとかして欲しいねvbは。 VB7 以降は別言語ですよと強調したい…なんて考えてないだろうな別に
ToRoundDown@になってるから、戻り値はDecimal型ってことじゃない? それでもAs句があるほうがすげえわかりやすいのに変わりないな
736 :
686 :2008/02/03(日) 21:54:31
>>717 すみません、なんども試したのですがうまくいきません。
今となってはなぜ一度うまくいったのかわからないぐらいです。
コードをリビルドすると
「サービス System.Windows.Forms.Design.IEventHandlerService は
既にサービスコンテナに存在します。
パラメータ名:serviceType」
というメッセージに変わりますが、依然デザイナは表示できません。
このエラー内容で検索してみたのですが、
解決に役立ちそうな情報はみつかりませんでした。
VB.net2003、デフォルトのWindowsFormを継承して作った独自フォームベースを
継承して作った共通部品だけの親フォームをさらに継承したフォームです。
だれかご存じのかたいらっしゃいましたらお願い致します。
>>736 だれかご存知の方ってアンタのソース見てるわけじゃないんだからわかんねーよ。
「共通部品だけの親フォーム」って意味わからん。
Formを継承→継承→継承→・・・何回やってもできるけど?
まっさらなプロジェクトで試してる?
何を切れてるかわからんけど、686の言ってることは一応意味はわかるでしょ普通w
原因はよくわからないけど。
>>736 とりあえず可能であれば、その共通のコントロールをまとめたフォームを
別のプロジェクトに分けてみることを薦める。
学校の課題で「購買管理システム」のWebアプリケーションの製作を行っているのですが、 新規社員を登録する際、社員番号は入社年度に番号付け。 値の範囲は 入社年度(西暦2桁)+シーケンス番号(3桁) と、社員番号を自動取得するにしたいのですが、どうプログラムしたらいいのか困ってます。 教えてください。お願いしますm(_ _)m
OracleならSEQUENCEでなんとかなる SQL Serverなら自力で頑張れ
>>739 そういう仕様が決まってるならさっさと作れる・・・
なに?まだ仕様がない? するってと俺が作るしかないのか orz
という素人仕事で始終固まってる俺からすると、ただ「マニュアル見てがんがれ!」
としかいえぬ。
>>739 まず最初に画面の構成を考えてみると、そこにどういうコントロールを配置すれば
いいか大体決まるから、そこでどういう操作をしたらいかも決まり、そうするとそれ
に対応するオブジェクトのイベントも決まり、そのイベントでどういう仕事をさせればいい
かが決まる。
そうしたらその各仕事に対応して具体的に描くべきコード(つまりプログラム)が決ま
ってくる、そこを生めていけばいい。そこに、
>値の範囲は
>入社年度(西暦2桁)+シーケンス番号(3桁)
という仕様が必要になる部分が出てくるからそこでそれを忠実にコーディングすれば
自然に全体のアプリケーションが出来上がる。
というこういうのがイベントドリブンの昔からのRADによるWindowsアプリのスクラップ
&ビルドの方法。つまり手なりで勝手にプログラムは出来上がるようにできてるのが
昔からのVSなんとかのツールだしコンセプトなんだよ。
743 :
739 :2008/02/04(月) 11:15:47
>>742 さん
画面の構成やコントロールはinputSyain.aspxを作って配置したんですが、
入社年度(西暦2桁)+シーケンス番号(3桁)を忠実にコーディングするプログラムがわかりません(>_<)
>>743 たぶん困ってるのは、
>入社年度(西暦2桁)、 と
>シーケンス番号
を覚えておく方法なんでしょうから、それをファイルなりデータベースなりにしておけば
いいよ。
覚えておくところがLocalでいいならファイルはTextファイルならたぶんクラスを定義
してXmlで保存復元できるので簡単。詳しくはDOBONさんのところで詳しく載ってる
のでそっちを参照(->テンプレ)。データベースにするんなら具体的には本読んで勉強
してください(VBだったら初めからLocal用のTableファイルがすぐにも使える)。
あ、ASP系がWindowsアプリとどう違うのかは知らんw
745 :
739 :2008/02/04(月) 12:07:37
丁寧にありがとうございます! 頑張ってみます。
746 :
739 :2008/02/04(月) 17:17:56
んー、やはり力不足で無理でした。 If xmode = "INSERT" Then lblHeader.Text = "■データメンテナンス:社員登録" Dim newID As String Dim count As Integer = 101 Dim endFLG As Integer = 0 Dim sqlstr As String Do While endFlag = 1 sqlstr = "select shaID from shain where shaID = " & 西暦 & string型にキャスト変換する関数(count) ShainSet = accessData.selectBySQL(sqlstr) shaView = New DataView(ShainSet.Tables(0)) If shaView.Count = 0 Then newID = 西暦 + count End If count = count + 1 Loop txtshaID.Text = newID btnGo.Text = "登録" ソースはこのような感じですかね?
747 :
ぺんぺん :2008/02/04(月) 20:36:43
登録した情報をMenuStripに追加していきたいのですが。 これだと、MenuStrip1が増えます、つまり横にのびちゃいます。 ToolStripMenuItemで縦にふやすにはどうしたらいいですか? ソース長いので分けて書きます。
748 :
ぺんぺん :2008/02/04(月) 20:38:38
Imports System.io Public Class Form1 Dim myAl As New ArrayList Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim sr As StreamReader = New StreamReader("c:\Test.csv") Dim line As String Dim i As Integer = 0 Do line = sr.ReadLine() If i <> 0 And line <> "" Then '一行目パス myAl.Add(line) Dim sData() As String = line.Split(",") MenuStrip1.Items.Add(sData(0)) End If i += 1 Loop Until (line Is Nothing) sr.Close() End Sub Private Sub MenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles MenuStrip1.ItemClicked For i As Integer = 0 To myAL.Count - 1 Dim sData() As String = myAl(i).Split(",") If sData(0) = e.ClickedItem.ToString() Then TextBox1.Text = DirectCast(myAl(i), String) Return End If Next End Sub End Class
>スクラップ&ビルド ??
750 :
ぺんぺん :2008/02/04(月) 21:11:22
Vb2008 環境はXP そして ビルドです。
>>751 スクラップ&ビルド の検索結果 約 1,700 件中 1 - 10 件目 (0.18 秒)
スクラッチ&ビルド の検索結果 約 75,900 件中 1 - 10 件目 (0.16 秒)
>>752 君も頭悪いと思うよ、得意げになってるのかもしれんがw
>>752 これだからゆとりは…
そんなに顔真っ赤にして恥の上塗りしなくていいからw
スクラップ〜は最初に綿密な設計をせずにトライアンドエラーで開発する手法
スクラッチ〜はゼロから部品の寄せ集めで開発する手法
RADの文脈でどちらが適切かは言うまでも無いでしょ?
>スクラップ〜は最初に綿密な設計をせずにトライアンドエラーで開発する手法 こんな使い方をしてる人は居ないんだよ。
スクラップ&スクラップ
っていうか、そもそもスクラップ&ビルドって言葉はこの世界の言葉じゃなくて
もっとごく一般的な言葉なわけでさw
スクラッチ&ビルドは知らなくても恥ずかしくないかもしれないが、
スクラップ&ビルドって言葉を知らないのはかなり恥ずかしいと思うぞ。
個人的には
>>756 の説明もちょっと変だと思う。
ひょっとすると
>>756 がいってるのはこの業界特有の用法なのかも知れないが、
一般的な「スクラップ&ビルド」は文字通り(増改築ではなく)ゼロベースの
「再建」のことだね
>>756 は業界特有の用法でもなんでもなく
言葉を自分で定義する事でつじつまを合わせようとしてるだけだよ
>というこういうのがイベントドリブンの昔からのRADによるWindowsアプリのスクラップ >&ビルドの方法。つまり手なりで勝手にプログラムは出来上がるようにできてるのが >昔からのVSなんとかのツールだしコンセプトなんだよ。 どう見てもスクラップ&ビルドは意味が違うように見える。
まあそれでも、こんな常識的な言葉そのものの存在を知らない人よりずいぶんマシだよ
それは多分ただの誤用でしょ。
だから
>>753 に書いたように両方とも恥ずかしいんだよw
という事にしたいのですね:-)
VB厨なんてそんなもんさ
どっちも恥ずかしいけどレベルは一緒だと思うよ
768 :
ぺんぺん :2008/02/04(月) 22:30:01
>こんな常識的な言葉そのもの を変な扱い方するほうもはずかしいよ
>どっちも恥ずかしいけどレベルは一緒だと思うよ ↑ 自分が入っていないように思わせるところがミソ
だれにいってんだ?
恥ずかしい人を認定せずには居られない人が居るようですね(・∀・)クスクス
久々に沸いてきたな^p^
オマエガナー
>>768 何で横に伸びてるか考えたり調べたりしないわけ?
Dim t As ToolStripMenuItem
t = New ToolStripMenuItem("menu")
t.DropDownItems.Add(New ToolStripMenuItem("sub1"))
t.DropDownItems.Add(New ToolStripMenuItem("sub2"))
MenuStrip1.Items.Add(t)
MDIのアプリを作ろうとしていますが、 親のMDIフォームにToolStripContainerをDockStyle.Fillで張り付けた場合、 MDIの子ウィンドウが表示されなくなりますが、 これを表示させるようにするための解決法はございますでしょうか? Excel2003のようなアプリを目指しています。
たとえば、いわゆるITの世界だとプログラムの作成ツールの話が相当コアな話題の 源泉になることがありますが、これがFA用のアプリケーションなんかを作る世界に なると、たとえばシーケンサなんかのプログラムの作成ツールなんかはそのコンセプトが 云々とかコアにそのつくりがどうのとか話題になることはなく、とにかくどんどん アプリケーションが作成できることが重要で、部品を配置してその連携・連動で動作 が作られるとかは当然で毎日の忙しい作業の一つでしかない状況をもっと簡便 にスムーズにという目的が優先して意識されていて、あまりにも感覚が違う世界 になっている。ちょうどノートPCがオフィスでこぎれいに使われてるのと、工場や 工事現場のトラックで泥まみれで忙しく使われてるようなところとの違いでもあり、 薀蓄に満ちたプログラミングの哲学が論じられやすいのはそれだけ暇だからって ことなのだろうか。そんなことはないとは思うが、それにしても細かいことを気に しすぎる傾向があると思うよ。ちなみに「スクラッチ&ビルド」で検索したつもりの 人はどうかしてるとも思う。なぜなら「スクラッチ&ビルド」で引っかかったのは あくまでも検索エンジンの仕様のためで、検索された用語はすべて「スクラッチ ビルド(scratch build)」だからだ。&が入った用語は存在していないことにも 気がつかないというのは常用言語のレベルの問題だと私は思う。
めんどくせ
>>776 DockStyle.Fill じゃなくすれば良いよ。
780 :
デフォルトの名無しさん :2008/02/05(火) 13:31:30
AddHandlerで同じハンドラを追加する可能性がある場合、 それを忌避するために指定したイベントに対してすでにAddHandlerされて いるハンドラを列挙するメソッドやプロティとかはあるでしょうか?
782 :
デフォルトの名無しさん :2008/02/05(火) 14:05:20
>>780 ないです。
二重にAddHandlerしてしまうのを避ける目的なら、直前でRemoveHandlerすればよいかと。
ちなみにAddHandlerしてないのにRemoveHandlerしてしまったとしても特に怒られもしません。
783 :
デフォルトの名無しさん :2008/02/05(火) 14:50:03
>>782 実は複数追加されて複数回同じハンドラが呼び出されていました。
そうですか、やぱりないのですね。ありがとうございました!!
それは設計思想が問題な気がする。
>>784 そうかもしれません。
それでちょっと教えていただきたいのですが、強制的にToolStripButtonなどの
DropDownをOpenさせる方法があれば知りたいのですが、もしこれがありましたら
教えてください。
よろしくお願いします。
ToolStripDropDownButton1.ShowDropDown()
787 :
デフォルトの名無しさん :2008/02/05(火) 17:59:11
>>786 うまくいきました!!ありがとうございました!!
DataTableを group by するメソッドとかある?
789 :
デフォルトの名無しさん :2008/02/06(水) 10:56:20
group byしてどうしたいのだ
>>799 あったら便利だったから。待つのめんどくさいから自分で書いちまったけど。
791 :
デフォルトの名無しさん :2008/02/06(水) 12:28:35
グループ毎に集計する、とかじゃないの? あったら便利だから??
>>791 いや、ただ単に取ってきたDataSetのmin,maxが欲しかっただけなんよ。
んでDataTableに軽いsql流せたら便利だなーってことで聞いてみた。
whereはselectで出来るけどgroup byにあたるのねーかな、みたいな。
式で書けたりしなかったっけ?
背景に画像を使っているのですが、タイマーを使用しピクチャーボックスを動かすとピクチャーボックスがちらつきます。 何か対処方法はありますか?
>>795 WM_PAINTをフックして、自分の好きなタイミングで再描画させるようにする
それこそダブルバッファじゃないの? あ、コントロールが被ってたら意味なかったっけ?
Visual Studio 2008 Expressってのをインストールしたんですけど、 Nunitをデバッグモードで実行するのってどうしたらいいんですか?
>>794 読めないのに努力してくれたことに感謝する
>>795 画像をメモリDCに入れてBitbltしとけ
800 :
デフォルトの名無しさん :2008/02/07(木) 08:17:16
FilesystemWatcher とかTimer などを使うとメモリー消費とかIOリソースとか の消費量が自動的に増えていくようなことはあるでしょうか? ProcessExplorerというMicrosoftの開発者の作成になるプロセス関係のツール を見てみると、I/Oの(ReadでもWriteでもないOther欄が1秒に10ぐらいずつ増加 していました。これってそういう消費を増やす動作をしているものがあるということ でしょうか。それとFilesystemWatcher やTimer などは本来的に無関係でしょうか?
801 :
デフォルトの名無しさん :2008/02/07(木) 17:04:46
質問させてください。 マルチディスプレイ(2画面)にいくつかのフォームを表示させて作業をするシステムを想定して開発をしております。 そこで、指定したフォームが、現在プライマリ、セカンダリ、どちらに表示されているかを取得するプロパティやメソッド等はありますでしょうか? 解かる方、ご教示お願いします。
System.Windows.Forms.Screen
803 :
801 :2008/02/07(木) 17:35:08
>>802 どうもです。それをヒントに
Array.IndexOf(Screen.AllScreens, Screen.FromControl(Me))
でプライマリとセカンダリが判別できるようになりました(`・ω・´)
804 :
デフォルトの名無しさん :2008/02/10(日) 01:41:19
VB2005で動画のファイルから静止画を取り出すプログラムを作成しています。 簡単にすまそうと、MediaDetを使用して…と思い、プロジェクト→参照の追加で、COMのタブにあった Dexter 1.0 Type Libraryを追加しました。 次にMSのサイトにあったサンプルコードを入れてみたのですが、 Dim Det As New MediaDet のところで、「型 'MediaDet' が定義されていません。」とエラーが出ます。 参照の他に何かすることがあるのでしょうか?
namespace
806 :
デフォルトの名無しさん :2008/02/10(日) 02:14:12
>>805 モンチッチさん
ありがとうございました。
名前空間に、DexterLibを追加したらエラーが取れました。
これから、実際のプログラムを作成してみます。
この間2005で作成したアプリを2008の変換ウィザードで変換して ビルドしたんですが、アプリを使っていると必ず「例外をスローしました」という エラーが出るようになり困っています。 2005でビルドしているときにはこんなエラーは全くなかったんですが。
なんだのその糞ブログみたいな文章w
共通関数を作っているんだけど引数にStringがあって、 Nothingを入れた場合の処理はどうしてますか? 今まではNothingが入ってくることを想定してなくて Nothingを扱えないところでエラーがThrowされていたんですけど なんかスマートじゃないような気がして。 今度は下のようにNothingをチェックしてNothingを返してみたり。 Public Function Test(Byval Str as String) as String 'Nothingチェック If Str is Nothing Then Return Nothing End ・・・ End Function その場その場で適切にすれば良いんだけど、 共通関数として作成するので一般的なコーディングはどんな感じなのかと。 NothingExceptionみたいなのがあればそれをThrowするですけどねぇ どんな感じですかね?
ArgumentNullException?
NothingExceptionじゃなくて、NullReference Exceptionじゃない?
814 :
810 :2008/02/10(日) 17:23:28
>>811-813 提示していただいたリンクがそのものズバリでした。
Nothingを許さない場合は
ArgumentNullException
その他の場合も
ArgumentException
ArgumentOutOfRangeException
このあたりを状況に応じてスローするのが良いのですね。
勉強になりました。
ありがとうございました。
815 :
807 :2008/02/10(日) 21:49:00
HRESULTからの例外:0x800A007C 発生してる例外と言うのが上記なんですが ググっても英語ページにいくつか情報があるぐらいでよくわかりません。 ディスプレイ関係のようですが、わかる方いらっしゃらないでしょうか?
どこで発生してるのか調べて 発生個所周辺のコードを見せろ
817 :
807 :2008/02/10(日) 22:13:44
>>816 ありがとうございます、テンパってました;
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, _
ByVal e As System.ComponentModel.ProgressChangedEventArgs) _
Handles BackgroundWorker1.ProgressChanged
Me.ProgressBar1.Value = e.ProgressPercentage
End Sub
原因は進捗率eが100%超えたためのようです。
2008にしたとたん何で100%を超えるのかサパーリ判りませんが
これからコード見直して見ます。
お騒がせしました。
お世話になります。 VB.Net 2008で作成したEXEファイルをWindows Vistaのスタートアップに登録したところ OS起動時にブロックしましたと表示され、停止してしまいます UAC対応のためEXEファイルにマニフェストを組み込んで、レベルをRequireAdministratorで実行しても スタートアップはブロックされてしまいます。 手元にはXpしかなく、どのようにすべきか見当が付きません、よろしくお願いしますm(_ _)m
そりゃ、起動する度にRequireAdminで昇格求められたら面倒でかなわんと思う。
起動しただけでブロックされるって何やってんの? TCPサーバ作ってファイアウォールの設定変更しないといけないから、UACが出る、とかいうのはわかるけどさ。
指摘ありがとうございます
起動するのはコマンドプロンプト・電源の監視・制御系で
システムには何も影響しない物です
RequireAdminで昇格を求められることは初めて知りました、解除してみます
どのような感じなのか自分では判りません、実際に自分でも見れればいいのですが、、、
http://microg.web.fc2.com/software.html Power management Following two
Vistaじゃないんで試せないが、 asInvokerが昇格なし(制限ユーザの権限) highestAvaiableが使える範囲で最高の権限のはず
去年PC買ったらVistaだったから、うpしてもらえればある程度試せるけど? ウイルスとかはマジ勘弁だけど。
それが、結構動作環境が狭く Office コンポーネントが入っていないと動かないのが判りました Office 2003等が入っていれば動くのですがOffice 2007では別に Office 2003 Web コンポーネントのインストールをしてもらわないと動けません。 (エラー対策のためソフト起動時に動作環境を確かめます) このことはサイトでマイクロソフトの説明書と一緒に載せています もしよかったらで良いのでお願いします。 物は常に新しいものをアップしています、調整中なのでバージョンはそのままですが最新です ソフトウェアがレジストリを変更したり、システムに情報を書き加えることはありません
追記です、 レジストリ・システムには書き加えませんが、 Rebootを含むスケジュール実行では、スタートメニューのスタートアップに自分を追加します レジストリからではなく 「C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ」 にファイルを追加します、
使い方が違うのか、リストに追加して終了方法を再起動にしてもCPUモニターが出るだけで何も起こらない。 CPUモニター、本体ともに管理者権限で実行するようにしても。 あと、CPUモニター単体で起動しようとすると、動作を停止しましたって出るからなんとかしたほうがいいと思う。
827 :
デフォルトの名無しさん :2008/02/11(月) 20:21:43
2008発売されましたね。 ところで私は2003をもっているのですが、途中VISTAパソコンを 新しく買ってそこにはインストールしていません。 でVB2008を買うにはアップグレードを買ったものかどうかわからない のです。なんでもVISTAには2003は合わないらしいと雑誌で見た記憶が・・・ それともしよければスタンダードとプロフェッショナルの違いも教えていただ けるとうれしいのですが、それとアカデミックの場合はいかがなのか。 そろそろゲームを作ってベクタにのせてみようなどと考えているのですが どなたかお教えください。
気持ち悪いぐらいに親切だなw 5分時間を割いて自分で調べればわかることだと思うんだけど 俺はこの手のただの甘えん坊の質問には答える気になれんよ全然
答えるほうもいろんな人間がいるからね。
そんな自分が好きです^^
躾のつもりでしょうか?
834 :
デフォルトの名無しさん :2008/02/11(月) 20:53:17
ありがとうございます。エクスプレスはオンラインでDLできるのですね。 これが無料だということはアップグレード版しか普通売れないような気がする のですが、そういうものなのですね。 というかエクスプレス版でもかなり充実しているような・・・ とりあえずは取り掛かってみます。善は急げで明日買いにいこうかと思っていた のですが、予定変更です。プロフェッショナル版は資料が充実しているようですね。 ありがとうございました。
Expressで不満が無ければ買わない方がいい。
836 :
デフォルトの名無しさん :2008/02/11(月) 21:14:27
なんとなくですが、私はエクスプレスのことを知らなかったのですが、 これはかなりの大盤振る舞いのような気がします。 ホクホク うれしい取り計らいですが、どんな背景があってこうなったのでしょうか。 それにしても随分な無料版ですね。それにしても・・・
>>826 Power management Following two.exeはスケジュールの作成・テスト実行担当で
Power management CPU monitor.exeはスケジュール実行を行うソフトです
これらを分けているのはOS再起動後に起動が少しでも軽くなるように
ファイルサイズを減らしています
単体で起動できないようにしているのは、間違って実行してしまったとき
前回のスケジュールを行うなどの誤作動をするので禁止しています
ぁ、あとCPUモニターはOS起動が完了したことを確認するため 使用率4%以下を10秒間カウントしてからスケジュールを実行するようにしています
開発までするPCユーザーは少ないから 無料でソフト開発してもらってPCとOS買うユーザー増やしてもらったほうが得するってことだろ
840 :
デフォルトの名無しさん :2008/02/11(月) 21:47:30
開発するユーザーが少ないから開発費用を転嫁して 値段を上げようなどと考えないのがある意味で不思議ですが、 よしよしそこまで勉強したのか、というような気持ちで無料になった ということなのでしょうか。うれしい。
VSの主力は売上ベースで個人じゃなくチームエディションに移ってるらしいですよ でも個人プログラマのフリーソフトなどの充実がOS選択に影響を与えるのは事実だし 今のうちに手を打っとこうという計算じゃないでしょうか 自分もVBが高くて指をくわえていた類です
VSのバージョン上げれば(作る側にとっては)便利になるのは分かっちゃいるが ユーザがドトネトのバージョンアップしてくれるかというと…
Vista SP1やXP SP3に.NET Framework 3.5付けてくれればいいのに。 #インストール時にオプション画面でチェック外すとインストールされないとでもすればいいだろ。
もう必需品に近いんだからMSアップデートで強制すればいいのに ドトネトのアプリ起動したら自動アップデートするとか
>>843-844 ずいぶんと独善的な発想だなあw
俺自身いくらドトネトの恩恵を受けててもユーザーの選択権を無視するような
意見にはとても賛同できんわ
846 :
843 :2008/02/11(月) 23:09:53
待て、俺の案は任意で拒否できるぞ。 確かに標準ではインストールすると書いたけど。
.netインストールしたらJavaがインストールできなくなるわけじゃないし .netをアップデートしたら過去の.netで作成したアプリが使えなくなるわけでもないし どこらへんが独善的なんだろ?
自己中乙
849 :
デフォルトの名無しさん :2008/02/11(月) 23:18:22
>>847 君のうちのポストにくだらないチラシを入れていく連中も君と同じように考えてるんだろうね。
俺様がチラシ入れたからって郵便が届かなくなるわけじゃないだろう、みたいなw
そういう問題じゃないんだよ。
郵便ポストと一緒にされてもw 郵便ポストはくだらないチラシであふれたら郵便配達に支障がでるしw
そこはユーザがうまくやってくれるはずだからいいだろ
SP1とかSP3とか入れられたらたまんねーんだよ ってことじゃね?
とはいえ現状でもユーザが勝手に入れるのは普通に考えられるわけだし 企業ならどのみち何をインストールさせるかなんて管理するもんだろ?
854 :
デフォルトの名無しさん :2008/02/12(火) 11:05:23
>>586 >ListView 一つのアイテムの文字色変えると全部再描画
これ私も同じでした。Itemを追加してEndUpDateすると、全部のItemが再描画
されてしまいます、これを回避して増えた分だけの描画で済むようにはなる方法
がありましたら教えてください。
hoge1 = hoge2 と hoge1.Equals(hoge2) と String.Equals(hoge1,hoge2) 動きが同じように見えるけど内部的には違ってたりしますかね 変数はStringです
等値演算の方は Option Compare の影響があるな
858 :
デフォルトの名無しさん :2008/02/12(火) 11:41:42
859 :
854 :2008/02/12(火) 16:35:55
>>855 先ほどはありがとうございました。
この内容は私にはちょっと硬かったため、その後他も見てみましたところ
CodeProject Flicker-free ListView in .NET and XP. Free source code and programming help
http://www.codeproject.com/KB/list/listviewxp.aspx のようなところにサンプルがあって試してみましたが、問題がありました。
簡単にできそうに見えたのですが、DEMO版の方は確かにちらつきなしで
しっかりきれいにできたのに対し、Source版の方をやってみましたところ、
最初にVS2005用にUpgradeされ、それを実行したところでは、一つItem
を追加するたびにパラパラと再描画されていました。
(ソースがC#なのでC#スレで訊くべきでしょうか、そうでしたらそちらに移行します)
そこのコメント・レスのところには、owner draw にした上で、後は
VB.net : Me.SetStyle(ControlStyles.OptimisedDoubleBuffer, True)
ほとんどこれだけでもできるような書き込みもありましたが、こうしたときに
OnPaint()などを自分で描画するルーチンを書かなければならないとすると
これも大変そうで、うまくいきそうにありませんでした。何か簡単な方法が
あればいいのですが。
ListViewでDetails表示をする場合、カラムの高さはフォントの大きさで 自動的に変更されますが、見やすくするために少し高さを広げたいと 思うのですが、該当するプロパティなどは無さそうです。 カラムサイズを変更することは出来無いのでしょうか。 ご教授のほど、よろしくお願いいたします。
無理
DataGridViewの行をドラッグまたはショートカットキーの操作で 並べ替える(上下に移動する)方法ってあるでしょうか? Sotedでごにょごにょしたりすれば出来ますか?
>>862 行を一段上げたり下げたりならソートじゃなくてDataRowのコレクションを直接操作する感じじゃないかな。
特定行を削除後、指定位置に挿入、みたいな。
864 :
デフォルトの名無しさん :2008/02/13(水) 15:31:50
ファイル移動する前に、自分が移動先のフォルダのアクセス権を持っているかを 調べたいのですが、該当する関数等はあるのでしょうか?
866 :
862 :2008/02/13(水) 23:10:24
>>863 ありがとうございます。
ListだとAddに挿入位置を指定できるので現在の位置を記憶しておけばできますが
DataTableやDataGridViewだとAddに挿入位置を指定できませんよね?
自分で実装しないといけないでしょうか?
867 :
862 :2008/02/13(水) 23:19:09
実際のコントロールはフォームにDatagridviewを配置して BindingSourceにDatatableを指定してあります。 Datagridviewの行を選択してコンテキストもしくはキー操作で 選択中の行を上下させるという操作を考えています。 DatatableにはXMLまたはCSVからデータを読み込んでいるため DBを操作することはできません。
868 :
862 :2008/02/14(木) 01:27:00
【一行上に移動する場合】 1.現在の行を変数に格納する 2.一つ上の行の値を現在の行に書き込む 3.変数に取った値を一つ上の行に書き込む 4.カレント行を一つ上に移動する こんな感じで直接DataRowの値を操作する方法しか思いつきません。 もっと良い方法があればお願いします。
DataTable 系は行順に無頓着だからなぁ
870 :
デフォルトの名無しさん :2008/02/14(木) 11:22:40
Microsoft .NET Framework 2.0 Service Pack 1 (x86) は再頒布不可なのでしょうか?
Debug.Print("バレンタイン")
初心者でよく分からないのですが
>>871 のとおり入力しても「チョコ」と印刷されません。
なにが悪いのでしょうか。
875 :
デフォルトの名無しさん :2008/02/15(金) 10:51:27
質問です。 現在PCにインストールされているすべてのフォントの一覧をコンボボックスに表示させておりますが、 理想としては日本語に対応したフォントのみを一覧に表示させたいと思っています。 特定のフォントが日本語に対応しているかどうか調べる関数やプロパティはありますでしょうか? 解かる方宜しくお願いします。
よろしくお願いします、 いま、VistaのUAC解除のソフトウェアをVB.Net 2008で作っているのですが テストするにはやっぱりVista OSを手に入れて動作テストするしかないですか? 前回のようにマイクロソフトから無料のXPのイメージを配布しているとか、 Vistaでの動作を検証できるようなツールは無いでしょうか?
877 :
デフォルトの名無しさん :2008/02/15(金) 16:06:54
USBメモリにそのソフトをいれて、街の電気屋さんに行くんだ。 後は解るな?
それは2,3度友達がバイトしているので出来たのですが 最近ウイルスなどニュースで取り上げられてたので厳しいらしいです 多少制限などがあってもいいので、基本動作ができて手ごろな方法は無いでしょうか? サイトのほうでテストをしてくれている方がいるのですが、その人には鬱陶しくなる位テストして頂いているので、 これ以上ご迷惑をかけることも出来ず、、、
だから、このスレッドを見た人にテストしてくれと? 迷惑かけたくないんなら、Vista買って仮想PCにインストールしてテストすれば?
俺の財布に迷惑だろう・・・
Windows Server 2008のRC1がただで手に入る。 Administrator以外のユーザではVista同様のUACが有効。 ところで、解除ってUACのサービスを止めるってこと?そりゃないぜ。
ありがとうございます、早速ためしてみます!m(_ _)m サービスというか、UACの無効ですね、、、邪魔かなと思って
馬鹿じゃね?
解除しないほうがいいですか? もしかして何か問題が起こったりします?
セキュリティ低下
886 :
デフォルトの名無しさん :2008/02/15(金) 19:21:21
MSDNライブラリ検索おかしくね? 検索結果が英語ばっか
>>884 UACはバカがWindowsを使ってもセキュリティを確保するための仕組みなのに、
バカでも簡単に無効にできるようなソフトウェアなんてナンセンスにも程があるだろ。
すいません。いろいろ調べたのですができないの知恵のある方教えてください。 IPアドレスからその端末名(出来ればMacアドレスも)を取ってくるプログラムを作りたいのですが なかなかできません。 Dim strHostName As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry("192.168.1,3") 見たいな感じでもやってみましたが名前解決できないためか、 C:\WINDOWS\system32\drivers\etc\HOSTS に記述している分しかとってこれません。(他はipがかえってきます) ローカルネットワーク上の端末名(コンピュータ名)です。 pingを飛ばすときに端末名を書くとipに変換してくれるのでWindows上では変換してくれます(同じネットワーク部のPCのみですが) どこを見てもIPから端末名を取る記述は上のばかりのため困っています。お願いします
逆引きできないIPのホスト名はDNSでは取ってこれない NBTが有効になっているならコンピュータ名の名前解決はできるかもしれない さて、.Netではどう書けばいいんだったか MACアドレスはARPだな、こっちは書ける
nbtstatで名前解決したらMACアドレスもセットで返ってきたわ 一覧も取得できるし、なんとかなるんじゃない? でもクラスとして用意されてるかはよく知らん なかったらAPIよばないとできないかも
>>888 あれ、System.Net.DNS.GetHostEntryはNBTをサポートしてるみたいだ
試してみたらうちではちゃんとコンピュータ名も取ってきてるっぽい
3レスも消費したが力になれないわ、すまん
892 :
888 :2008/02/16(土) 23:14:58
>>891 レスありがとうございます。
コンピュータ名が見れたのはたとえば自分(WinXP)のPCのLan設定が
IPアドレス 192.168.1.2
サブネット 255.255.255.0
の時に
ローカルネットワーク上(スイッチングハブで接続)の別の見たい端末(WinXP)のLan設定が
IPアドレス 192.168.1.3
サブネット 255.255.255.0
の端末名が表示されたということですか?
Windowsでは、この設定の場合は192.168.1.*に設定されている端末のPC名は全て名前解決を
してくれるのでVBでも可能かと思っていました。
ttp://www.forest.impress.co.jp/article/2002/07/23/netenum.html ↑の情報がIP指定で取得できたらうれしいのですがそのような方法はVBではないのでしょうか?
891さん本当にありがとうございました
893 :
デフォルトの名無しさん :2008/02/17(日) 00:43:15
初歩的な質問で申し訳ありません。 ↓がキャストできません。と出るのですが原因がさっぱりわかりません。 Dim Dt As DataTable = DirectCast(Me.CatalogDataGridView.DataSource, DataTable) DataGridViewのDataSourceにはDataTableをセットしてあります。
894 :
893 :2008/02/17(日) 01:40:57
すみません、自己解決しました。
895 :
デフォルトの名無しさん :2008/02/17(日) 03:09:56
VS2005でエクスプローラー風のアプリを作成しようと ListViewにファイルのアイコン(16×16)を表示させていますが エクスプローラのように透明色が排除されずアイコンの 周りが青で表示されます。この青を消すことはできないのでしょうか?
VBAしかやってませんが、 VB.NETは敷居が高いでしょうか?
VBAってVB6みたいな奴じゃなかったっけ? VB.netから入ったからよく知らんが、やる気があれば問題ないんじゃね?
898 :
デフォルトの名無しさん :2008/02/17(日) 18:41:37
>>897 ExcelとかACCESSとかOfficeと連携してる
基本VBと同じ
敷居が高いかどうかは本人次第 無料で試せることを人に聞くようなのはどうかと
は〜い、VBA→VB2005で〜す。 VBAとは呼び名が違ったり書き方が違ったりなどは慣れだと思います。 文法もオブジェクト指向も基本的に一緒なのでそれほど苦にはなりませんでしたが 扱えるクラスが広いしクラスの継承などは今も勉強中です。
VBAでクラスモジュール扱ってんの見たことないのは俺の経験不足かしら。 まぁVBっぽい書き方出来るC#って考えた方が理解しやすいよね。 ちなみに俺は C→C++→VB4→VB5→VBA→VC6→J2SE→VB6→VB.NET なわけだからか、大した抵抗も何もなかったけど。 寧ろJavaやってたときのエディタの使い勝手の悪さの方が抵抗あったなー。
902 :
デフォルトの名無しさん :2008/02/17(日) 19:21:46
現在My.Computer.FileSystem.CopyDirectoryを使用してフォルダ間のコピーを行っているのですが、 フォルダ内のファイルとフォルダ数が多いため多少時間がかかります。 なるべく時間を掛けずにコピーを行いたいのですが、早くコピーする方法ってありますか? バージョンは2005です。
903 :
896 :2008/02/17(日) 21:08:12
レス有難うです
VBAしかやってなくて趣味ならJavaとかC#とかから入った方が 中途半端な知識が邪魔しなくて勉強しやすいかもね
VC#2008を入れて遊んでるんですが、問題が VC#で勝手についてくるVistaの新フォント「メイリオ」が使えません。 エラー内容はが 「これはtrue type フォントのみがサポートされています。これはtrue type フォントではありません」 フォントが壊れているのか、このXPが壊れてるのか、俺が手遅れなのかがわかりません 解決方法はありませんか?
908 :
デフォルトの名無しさん :2008/02/18(月) 11:58:29
>true type フォントのみがサポートされています。これはtrue type フォントではありません って書いてあるじゃん。 メイリオはtrue typeじゃないじゃん。 お前が手遅れじゃん。
メイリオのフォントの種類ってところに「TrueType コレクション フォント ファイル」って書いてるけど 違うって事なのか・・・orz 納得したサンクスb
910 :
908 :2008/02/18(月) 12:12:50
>>909 [画面のプロパティ]-[デザイン]-[効果]
「次の方法でスクリーンフォントの縁を滑らかにする」にチェックを入れて,「ClearType」を選択
これで使えるようになったりしないかな…
>>910 これは何回か試したんですが一緒でした、
いろいろやってみたんですが、OS再起で
10回に2,3回フォントの使用が許可される状態です
意味わかりませんね。。。
>>909 ttcは中にOpenTypeを含められる。
と言っても、メイリオはTrueTypeだけど(OpenTypeヘッダをもっている可能性はあるが)。
すごく抽象的な質問で申し訳ないのですが、 普通のフォームデザイナで作ったフォームのボタンを押したときって ボタンのイベントが動き出すじゃないですか? その動き出すイベントってのを自分のパソコンの中じゃなくて サーバーで動くプログラムの中に書きたいんですがそういうことって可能でしょうか? 可能であれば、どういった用語で検索すればそれらしいヒントにたどりつけますか?
とりあえず、md5とかSHAを晒して見れ。
ASP.NETとか、NetRemotingとか、WCFとかかなー
>>913 ボタンのイベントからサーバのメソッドを呼び出せばいい
.NETでやるんならWebサービスとかが簡単かもしれない
>>916 すみません。
ボタンのイベントからサーバのメソッドを呼び出す方法で詰まっています。
Webサービスで検索してみましたが、結構わからない単語だらけでびっくりです。
地道に勉強していきます。
ありがとうございました。
質問です。 VB.NETでexeファイルのショートカットを作りたいのですが 作業フォルダの設定の仕方がわかりません。 どうすればできますか?
>>917 使ってるのはExpress?
ならWeb Developer Expressを落としてきてASP.NET Webサービスのプロジェクトを作る
XPProならIISをインストールできるから、Webサーバを立ち上げてlocalhostでそのプロジェクトが動くようにする
後はWindowアプリケーションからWeb参照という仕組みでメソッドを呼び出す
やってみせると簡単なんだけど、説明すると難しい
>920 ご親切にどうもありがとうございました
>>919 ありがとうございます。
web参照というのができるのですね。
なんとなくわかった気がします。
IISについて勉強してみます。
いや、普通にショートカットファイル操作するために使うんだけど・・・。
924 :
デフォルトの名無しさん :2008/02/19(火) 22:48:13
質問です。初心者ですが基本といわれるバブルソートが出来ません。 Dim airData(8) work = 0 j = 0 For idx = 0 to airData.GetLength(0) - 1 if airData(j) > airData(j+1) work = airData(j) airData(j) = airData(j+1) airData(j+1) = work end if next 上記のように打ち込んだら一番最初の2つの配列だけソートされた だけで出力されました。簡単すぎるのか丁寧に解説してくれているサイトも見つからないので どなたかコメント付きで分かりやすいコードを書いてくれないでしょうか。 お願いします。
バブルソードは二重ループになってるはずだが
j が 0 から全く動いてないように見えるが
バブルソードは二層構造になってるはずだが
j+1をendifの前に入れたら配列の境界外とかでエラーになってしまい、 二重ループでFor j = 0 to 3 ってやってみたけどエラーになってしまって。 変数はidxとj以外にもう1つ必要なんでしょうか?
すみません。
>>929 はFor j = 0 to 8 の間違いです。
お前にはまだ8要素は早い。 3要素で考えてみろ。
わかりません。もう少しヒントもらえませんか? 他の人のサンプルプログラム見てもよく分からなくて困ってます。
他の人のサンプル見てもわからないやつにどういうヒントをだせばいいんだ? どこがわからないのかはっきり書かないと。
>>924 に手を加えるとしたら何かを教えて頂けるとありがたいのですが
そりゃ j のループやがな。
なんのためのカウンタだよ
まず、何でバブルソートを使えばソートできるのか、 バブルソートは何をやっているのか、 そこを理解しないとあかんと思う。
938 :
デフォルトの名無しさん :2008/02/19(火) 23:54:12
多分こうだろ Sub Main() Dim data(8) As Integer '適当な値を入れる Dim r As New Random() For i As Integer = 0 To data.Length - 1 data(i) = r.Next() Next Dim work As Integer 'ソート開始 For i As Integer = 0 To data.Length - 1 For j As Integer = data.Length - 1 To i + 1 Step -1 If data(j - 1) > data(j) Then work = data(j - 1) data(j - 1) = data(j) data(j) = work End If Next Next '結果出力 For i As Integer = 0 To data.Length - 1 Console.WriteLine(data(i).ToString()) Next End Sub
つうか、こういうのバブルソートって言うのか 知らんかったw
ソートの基本だわさ
Dim airData(8) work = 0 j = 0 For idx = 0 to airData.GetLength(0) - 1 ※処理回数は配列数-1をループ For j = idx+1 to airData.GetLength(0) - 1 ※jは処理回数(idx)と(idx+1)を比較していく if airData(j) > airData(j+1) ※ 隣の配列の数字を比較して work = airData(j) airData(j) = airData(j+1) airData(j+1) = work ※ひっくり返す end if next next あってます?まだ間違えてる?
>>938 参考にさせてもらいます。
すみません、皆ありがとう。
バブルソートってこういうのだっけ? まあこんなの学生の宿題以外の需要がないからねえ Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim values As Single() = RetrieveNumbersFromTextBox1() While True Dim noSwap As Boolean = True For i As Integer = 0 To values.Length - 2 If SwapWithNextItemIfGreater(values, i) Then noSwap = False End If Next If noSwap Then Exit While End While Dim texts As New List(Of String) For Each val As Single In values texts.Add(val.ToString) Next TextBox2.Text = String.Join(vbCrLf, texts.ToArray) End Sub
945続き Private Function SwapWithNextItemIfGreater(ByVal values As Single(), ByVal index As Integer) As Boolean Dim thisVal As Single = values(index) Dim nextVal As Single = values(index + 1) If thisVal > nextVal Then values(index) = nextVal values(index + 1) = thisVal Return True Else Return False End If End Function Private Function RetrieveNumbersFromTextBox1() As Single() Dim nubmers As New List(Of Single) For Each line As String In TextBox1.Lines nubmers.Add(Single.Parse(line)) Next Return nubmers.ToArray End Function
どう見ても学校の宿題です 本(ry
Do Until IsSorted(array) Shuffle(array) Loop
949 :
デフォルトの名無しさん :2008/02/20(水) 11:29:52
VB.netからPDFファイルを部数指定して印刷する方法って何かないでしょうか? あったら教えてください 環境:VB.net2003・ADOBE READER8
印刷ダイアログを操作する以外にないと思うよ それぐらいなら繰り返し印刷するほうが。。。
acropdf.dllにそういうメソッドはないかの?
ちょっと質問させてください。 ASP.NET 2.0(VB)でブラウザの戻るやページ内でバックスペースを押したときに Web ページの有効期限が切れています と表示されるページがありますが、あのように動作させるにはGlobal.asaxあたりに何か設定する必要があるのでしょうか? それともIISに設定があったりするのでしょうか? (その画面の時にF5などで更新を押すと 再送信しますか? と聞かれますがそのあたりも制御できるのでしょうか?) 今一歩そのあたりの深い部分が探しきれないので、ご存知の方がいらっしゃいましたらご教授いただければと思います。
>>953 「あのように」がどのようになのかさっぱりわからん
とりあえず、まずはPOSTリクエストについて調べろ
>>954 レスサンクスです。
動きとしては
ページ表示→遷移→戻るボタン(またはバックスペース)→Web ページの有効期限が切れていますと表示されているIEのエラーページ
この動作を実現させたいのです。
POSTリクエスト・・・とりあえずググってきます。
Expiresヘッダをなんとかして出せばよろし。
>>956 各ページのLoad時
Headerにこのようなものを出力するようにしてみました。
<meta http-equiv="Expires" content="0" />
<meta http-equiv="pragma" content="no-cache" />
実現方法は以下のとおりです。
Dim meta1 As New Web.UI.HtmlControls.HtmlMeta
meta1.HttpEquiv = "Expires"
meta1.Content = "0"
Me.Header.Controls.Add(meta1)
Dim meta2 As New Web.UI.HtmlControls.HtmlMeta
meta2.HttpEquiv = "pragma"
meta2.Content = "no-cache"
Me.Header.Controls.Add(meta2)
'キャッシュ制御は以下のようにGlobal.asaxでリクエスト時に必ず設定するようにしてみました。
With HttpContext.Current.Response
.Cache.SetCacheability(HttpCacheability.ServerAndNoCache)
.Cache.SetAllowResponseInBrowserHistory(False)
End With
これだとキャッシュは作成されず、何かの原因で作成されたとしても有効期限0になると思っているのですが・・・
正常にメタタグは出力されているのですが、どうにも思った動きになりません。
この設定が悪いのでしょうか?それとも何かほかに設定が・・・
958 :
デフォルトの名無しさん :2008/02/21(木) 11:12:54
ツールストリップに動的にボタンを貼り付けたいと思い、下記のように AddHandlerに渡すメニューイベントを引数にして関数を呼び出したいのですが (1)でメニューイベントとして解釈させる方法がわかりません。 DirectCastしようにもXXXXXの部分がわかりません。 ご教授の程よろしくお願いいたします。 Public Sub SetButton(ByVal S As String, MenuEbvent As Object) Dim item As New ToolStripButton item.Text = S AddHandler item.Click, AddressOf DirectCast(MenuEvent, XXXXX) ==>(1) ToolStrip.Items.Add(item) End Sub SetButton("Menu1", ToolStripMenuItem1_Click) SetButton("Menu2", ToolStripMenuItem2_Click)
初心者ですみません><質問なのですが(ここであってるのかな^^;) 今VB2005でwebページを作成しているのですが、 そのなかでデザイナ側でGridViewのitemTemplateにCheckBoxを配置しているのですが それをソースコード上で記述して再現したいのですが、どのようにすればいいのかご教授願えませんでしょうか? 例えばボタンをGridViewに追加の場合だと Dim Button1 As ButtonField = New ButtonField Button1.HeaderText = "選択" Button1.Text = "選択" Button1.ButtonType = ButtonType.Button .Columns.Add(Button1) : Button1 = Nothing といった感じででうまくいくのですが TemplateでitemTemplateにCheckBoxを作成の場合ではどう記述すればいいのかわかりません Dim TemplateF As TemplateField = New TemplateField TemplateF.ItemTemplate = New ???? TemplateF.HeaderText = "ABC" TemplateF.???? TemplateF.???? .Columns.Add(TemplateF) : TemplateF = Nothing
960 :
デフォルトの名無しさん :2008/02/21(木) 13:33:09
あ、上げた方がいいのかな いきなりの長文もうしわけないです
961 :
至急求む :2008/02/21(木) 15:19:48
VS2005アカデミック、WindowsXpで以下のプログラムを 動かしたい。しかし Imports System.Managementが参照できないのだが、どうしたらいい? Imports System Imports System.Management Imports System.Windows.Forms Namespace WMISample Public Class MyWMIQuery Public Overloads Shared Function Main() As Integer Try Dim searcher As New ManagementObjectSearcher( _ "root\WMI", _ "SELECT * FROM ProcessorPerformance") For Each queryObj As ManagementObject In searcher.Get() Console.WriteLine("-----------------------------------") Console.WriteLine("ProcessorPerformance instance") Console.WriteLine("-----------------------------------") Console.WriteLine("Active: {0}", queryObj("Active")) Next Catch err As ManagementException MessageBox.Show("An error occurred while querying for WMI data: " & err.Message) End Try End Function End Class End Namespace
963 :
至急求む :2008/02/21(木) 16:02:44
>962 そそれがわからない。 参照の追加のCOMとか色々みてもない。ない。 あっといけた。いけた。よろこべ。でけた。
まて、急いでるのはわかるが、後続のために具体的にどうしたのかは書け。
965 :
959 :2008/02/21(木) 16:17:30
すみません先程の
>>959 ですが
なんとか以下のプログラム記述でGridView内にCheckBoxを表示する段階まではもっていけたのですが
Public Class MyTemplate
Implements ITemplate
Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn
Dim cb As New CheckBox
cb.ID = "CheckBoxABC"
container.Controls.Add(cb)
End Sub
End Class
---------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
With Me.GridView1
Dim tmpF As TemplateField = New TemplateField
tmpF.ItemTemplate = New MyTemplate()
tmpF.HeaderText = "あああ"
.Columns.Add(tmpF) : tmpF = Nothing
End With
End Sub
以下のような感じで生成したGridViewのチェックボックスにアクセスしようとすると
------
NullReferenceExceptionはユーザーコードによりハンドルされませんでした
オブジェクト参照がオブジェクト インスタンスに設定されていません
------
というエラーが発生してしまいます。
↑の通りNULLアクセスになっているようなのですが、CheckBox(?)の
インスタンスをどこでどうやって生成すればよいのでしょうか?今日一日ずっとこれやってますけどもうお手上げだーw
For i = 0 To Me.GridView1.Rows.Count - 1
CType(Me.GridView1.Rows(0).FindControl("CheckBoxShop"), CheckBox).Checked = True
Next
あと、名前つけ忘れてました、すみません
966 :
959 :2008/02/21(木) 17:11:16
うう・・返事がない
そろそろ次立てる頃?
>>958 C#だとそういう記述でできるけど、VBはC#とイベントの取り扱い方が違うからその方法では無理。
今から正解作るからちょっと待ってて
969 :
968 :2008/02/21(木) 18:34:53
VBで書こうとして気づいた。 C#だと簡単なのにVBだと書けないや。 RaiseEventだと自身のイベント以外は呼び出せないみたいだし。 イベントの取り扱い方に制限が掛かってて無理っぽいよ。
New EventHandler(AddressOf メソッド名) AddHandler イベント, DirectCast(obj, EventHandler)
そんな説明じゃ968や958にはわからないと思うよ。 まあ要はデリゲートを勉強しろってことだけどさ。
972 :
968 :2008/02/21(木) 19:06:50
失礼、普通にできたな。 AddressOf演算子というものを使うわけだな。 下記のコードで、ButtonクリックでToolStripMenuItem1_Clickメソッドが呼び出されることが可能になった。 Public Class Form1 Public Sub SetButton(ByVal S As String, ByVal MenuEbvent As EventHandler) Dim item As New Button() item.Text = S item.Dock = DockStyle.Fill AddHandler item.Click, MenuEbvent Me.Controls.Add(item) End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load SetButton("Menu1", AddressOf ToolStripMenuItem1_Click) End Sub Private Sub ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem1.Click MessageBox.Show("OK") End Sub End Class
AddreesOf知らないで今までどういう「イベントを使うコード」 書いてたんだろう968はw というか、だから本当はデリゲートを理解してないのが問題なんだよ。
974 :
968 :2008/02/21(木) 20:13:25
>>973 あほかと・・・w
C#にAddressOfなんてないんだよ。
随分必死だなお前w
自作のユーザーコントロールにイベントデリゲートを宣言して、
自作イベントを外から扱ったりしてますけども。
C#と違ってVBだとデリゲートを直接呼び出すことができないことも
分かんないのかね君は
975 :
958 :2008/02/21(木) 20:15:31
皆さん、有り難うございました。 すっきりしました。
>>974 統合失調症の人?
俺はエスパーじゃないから君がC#な人かどうかなんて知らない。
っていうか、ここどこ?w
ついでに言えば、
>C#と違ってVBだとデリゲートを直接呼び出すことができないことも
何これ意味がわからん。
>>968-969 みれば彼がC#な人間だということはわかるだろ。
でもなんでVB.NETのスレにいるのかはわからないけど。
なんでC#そんなに好きなのにVBやってんの? C#の方がいいんなら、そっちでやりゃいいじゃん?
C#使ってる人は質問に回答してはイカンとですか。
はっきりしてることはウザイから他所でやれと言うことだ
少なくともC#では〜なんて回答は何の役にも立たんわけで
まあちゃんと理解できてたらVB.NETもC#も一緒
んだんだ
984 :
デフォルトの名無しさん :2008/02/22(金) 02:42:17
MSDNを見るとカーソルキーでKeyDownを発生させるためにはIsInputKeyメソッドをオーバーライドする必要があり、 既定の動作は使えなくなります見たいなことが書いてあるけど DataGridViewで試したらIsInputKeyをオーバーライドしなくてもKeyDownイベントが発生したし 既定の動作(フォーカスの移動)もしっかり生きてるんだけど、これ仕様なのかな? XP VB2008
985 :
968 :2008/02/22(金) 02:51:25
>>976 自作クラスに自作イベントを宣言し、そのインスタンスをForm1で宣言しました。
Form1のButton1がクリックされたときに先のインスタンスの自作イベントが発生するようにしたい。
VBでどうやって書く?RaiseEventを使おうとしてもForm1のイベントじゃないから無理みたいだよ。
ちなみにC#だったらイベントデリゲートを直接呼び出すことが可能だから簡単。
VBでも当然できるんだよね?
Public Class Form1
WithEvents tmp As New EventTest()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'ここにコードを書いてください
End Sub
End Class
'ユーザー定義型
Public Class EventTest
'自作イベント
Public Event PropertyChanged(ByVal sender As Object, ByVal e As EventArgs)
'プロパティ
Private newPropertyValue As String
Public Property NewProperty() As String
Get
Return newPropertyValue
End Get
Set(ByVal value As String)
newPropertyValue = value
'PropertyChangedイベントを発生させる
RaiseEvent PropertyChanged(Me, Nothing)
End Set
End Property
End Class
986 :
984 :2008/02/22(金) 02:53:44
ごめん、寝ぼけていっしょにAlt押してたの忘れてた
987 :
984 :2008/02/22(金) 05:16:18
やっぱIsInputKeyをオーバーライドしなくてもカーソルキーだけでKeyDown発生した なんでだー
C#でもクラスの外部から直接イベントを起動するのは無理なんじゃないか? むしろ出来てしまうといろいろまずいような。 直接DelegateをPublicでさらすなら可能だがそれならVBでも出来る。
具体的に書かないと理解できないだろうからコードを示しておく Delegate Sub TestCallback(A As Integer, B As Integer) Class Test Public TestChanged As TestCallBack Public Sub DoTest If TestChanged <> Nothing Then TestChanged.Invoke(1, 2) End If End Sub End Class Module Startup Sub Main Dim Test1 As New Test Test1.TestChanged = AddressOf MyCallback Test1.DoTest() Test1.TestChanged.Invoke(10,20) End Sub Sub MyCallback(A As Integer, B As Integer) Console.WriteLine("{0} {1}", A, B) End Sub End Module
別にそんな面倒なことしなくてもUI部品のPerformClickみたいに「イベントを生成するメソッド」 を公開するだけのことでしょ。
>>959 に誰もレスしてないのワラタwww
ここの住人もたいしたことね〜なwwwww
994 :
デフォルトの名無しさん :2008/02/22(金) 10:07:05
ここの住民と言うより、VBプログラマがたいした事ないんだろう
まあそうカリカリすんなって 今誰かがかいてるから
で、次スレまだ?w
997
10000000げっとぉ
>>992 トートロジーって言葉、遣ってみたかったの?
1000は、こいつです。 ↓
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。