[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 02/22 21:23 / Filesize : 217 KB / Number-of Response : 848
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

VB.NET質問スレ(Part26)



1 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 18:07:34 ]
前スレ

VB.NET質問スレ(Part25)
pc11.2ch.net/test/read.cgi/tech/1203650042/

テンプレは2〜5くらいまでの間にある予定

441 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 15:59:01 ]
Gridview内にグラフを作ることになたのですが、方法がわからず、
邪道なやりかたですがpanelに色をつけて
Widthでサイズをいじって棒グラフのようなものを表示させることができました。
しかしIEでは表示できるのにFIREFOXでは表示できませんでした。
どなたか理由がわかる方いませんでしょうか?

またGridView内にグラフを表示させる正規のやり方が載ってるサイトがあったら紹介していただけると嬉しいです。

442 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:24:56 ]
>>433-434
実際はケースバーイケースだと思うけどね。

誰が使うかわからないクラスライブラリの場合はほとんどの場合
渡された配列を複製して持つべき(といっても、こう言い切れるのは構造体のフィールドに
参照型を含まない場合だけだと思うけど)だろうけど、自分だけがわかって使えばいい場合や
パフォーマンスが問題になる場合はそうとも言えない。

443 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:40:37 ]
俺も完全にカプセル化はやらないことも多い。
仕様には明記しとくが。


444 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:11:09 ]
というか、カプセル化というのは
簡単にいえば「余分なものを外に見せない(疎結合っていうんだっけ?)」
のことであって、この話題のように同一のオブジェクトの参照を
外と共有してもいいかという話とはちょっと違わないか?

445 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 23:09:48 ]
同じことだよ
一度やっちゃったら二度と勝手に切り離せない

446 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 23:44:48 ]
>>441
オーナードロー?

447 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 10:35:28 ]
>>446
えっと、プログラム側で指定しています。
GridViewのRowDataBoundでこのような処理をしています。

Dim panel1 As Panel = New Panel
Dim Value As String = e.Row.Cells(0).Text

panel1.Width = Cint(Value)

If (Cint(Value) < 50) Then
panel1.BackColor = Drawing.Color.Blue
Else
panel1.BackColor = Drawing.Color.Red

e.Row.Cells(1).Controls.Add(Panel1)

これだとIEは棒グラフのように表示されますが、
FireFoxでは表示がされませんでした。
ご教授よろしくお願いします。



448 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 10:44:22 ]
>>447
配色がプログラム優先になってないなんてこた無いよな?

449 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 11:22:09 ]
>>448
それはプログラム側で指定してやるものなんでしょうか?
だとしたらそういう記述は何もしていません。

PanelやCellの背景の配色はCSSではやっていないので
上記のプログラムの配色が反映されるものとばかり思っていました。



450 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:43:59 ]
>>449
まあ、一時避難的な対処方法だけど
panel1.Controls.Add(New LiteralControl("<br clear='all'>"))
として、DIVタグ内に(具体的にはDIVの閉じタグの直前にだが)"<br clear='all'>"を追加してやると
背景色が表示される

451 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 16:19:07 ]
>>450
表示できるようになりました。ありがとうございました。
今からどういう仕組みになってるのか自分なりに調べてみます。
お世話になりました。

452 名前:デフォルトの名無しさん [2008/07/28(月) 10:58:33 ]
他のスレにも書いてしまったんでマルチで申し訳ないですが
そっちのスレでVB.NETでしょと言われたのでこちらで質問させてください。

現在本を見ながら預貯金の金利計算プログラムを作っています。
本に書いてある通りに記述してるのですが
'変数の宣言と初期化
Dim presentvalue As Double = 0
Dim rate As Double = 0
Dim years As Double = 0
Dim futurevalue As Double = 0

'入力値の取得
presentvalue = Double.Parse(PresentValueBox.Text)
rate = Double.Parse(RateBox.Text) / 100
years = Double.Parse(YearsBox.Text)

'元利合計の計算
futurevalue = presentvalue * (1 + rate) ^ years

'元利合計の表示
FutureValueBox.Text = futurevalue.ToString()
入力値の取得の3行がうまくいきません、何故でしょうか教えてください。

453 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 11:16:37 ]
そっちのスレへ謝罪を書くのが先だろクソボケ

454 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 11:35:58 ]
>>452
「うまくいきません」てのは、エラーメッセージが読めないとかそういう事情?
テキストボックスがカラだったり英字が含まれてたりするとエラーになるだろね、
くらいしかアドバイスできんのだが。

455 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 11:49:21 ]
このスレいい具合におわっとる

456 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 11:59:05 ]
>>452
動くだろ、これ。計算が変だけど。

457 名前:デフォルトの名無しさん [2008/07/28(月) 13:46:01 ]
BackgroundWorker の使い方に関して教えてください。
BackgroundWorker の DoWork イベントハンドラ内に、
表示用のコントロールのプロパティ設定やパラメータの変更などをしたい
のですが、それは可能でしょうか?ヘルプか何かでコントロールへの
アクセスは不可という記事をどこかで見たのですが、どうやっても
無理でしょうか?
よろしくお願いします。

458 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 13:48:17 ]
control.invoke/begininvoke

459 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 14:12:43 ]
ProgressChanged使えば?



460 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 18:40:57 ]
Parse を使うのが一般的なの?

漏れは CInt だとか CDbl だとか、String に変換するときは
ToString() を使ってるんだけど。

461 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:03:21 ]
そりゃ文字列“から”変換するのは Parse か、TryParse だろう。
CType 派もいるかも知らんが。

462 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 19:54:59 ]
Microsoft.VisualBasic.CompilerServices.Conversions

463 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 20:30:07 ]
>>460
Parseを使うのが一般的だろうねえ。

Cintとかは旧VBerの救済っぽくて嫌とか、変換なのにキャストっぽく見えちゃうのが嫌っていう
メンタル的な意味もあるけど、カルチャ(IFormatProvider)を指定できないのが
場合によっては致命傷。

# これからはカルチャも「カルチャー」に変えないとダメなのかな。

464 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 20:37:01 ]
dim i = CInt("&H20")
dim i = Integer.Parse("&H20") ' System.FormatException



465 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 20:38:57 ]
>>464
ボキュはお馬鹿です、って言いたいのひょっとして?w

466 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:14:03 ]
教えてください
VB2005です。
列挙体を構造体のメンバーにするにはどうすれば良いのか?

467 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:15:16 ]
名前 As 構造体の型

468 名前:467 mailto:sage [2008/07/28(月) 21:15:47 ]
間違えた
名前 As 列挙体の型

469 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:20:04 ]
>>468
ありがとう〜
確認してみます



470 名前:デフォルトの名無しさん [2008/07/29(火) 23:28:07 ]
フォームがアクティブではなくてもkey stateを取得できるようにしたいのですが
どうすればよいですか?win32APIを使えば可能なようですが良くわかりません。
どなたかためしに簡単なソースコードを作ってみてもらえませんでしょうか?

471 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 04:05:24 ]
> どなたかためしに簡単なソースコードを作ってみてもらえませんでしょうか?
> どなたかためしに簡単なソースコードを作ってみてもらえませんでしょうか?
> どなたかためしに簡単なソースコードを作ってみてもらえませんでしょうか?
どんだけ〜

472 名前:デフォルトの名無しさん [2008/07/30(水) 20:42:54 ]
ひ、ヒントだけでもよいのでお願いします・・・!!

473 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 06:26:16 ]
何をしたいのかによると思うけど。
ホットキーなのかキーロガーなのか。

474 名前:デフォルトの名無しさん [2008/07/31(木) 21:16:27 ]
キーロガーを思い浮かべていたんですが
ホットキーというのをはじめてしりました
できれば両方教えてください。

475 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 21:25:42 ]
>>474
悪用するからおしえなーい

476 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 12:15:04 ]
>>474
犯罪者乙

477 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 12:47:46 ]
いまどきのウイルス検出だとキーロガーっぽいプログラムは弾かれるんだよね

478 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 15:46:45 ]
何度も出た質問だと思うが
数年ぶりにここのぞくので教えてくれ

プロジェクト全体でエクセプションを拾う方法って
スタートをSubMainにして
その中でTry〜catchするだけ?

ほかにもやり方ある?


479 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 16:14:47 ]
アプリケーションイベント OnUnhandledException() とか。



480 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 17:33:42 ]
Cのtypeof相当ってないですか?

481 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 18:02:40 ]
result = TypeOf objectexpression Is typename

482 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 18:27:21 ]
Cにtypeofなんてあったっけ

483 名前:480 mailto:sage [2008/08/01(金) 18:28:10 ]
>>481
すみません、ボケてました。typedefでした。
型に別名をつけることはできますか?

484 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 18:38:36 ]
ファイルスコープのみImportsで可能

485 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 19:08:25 ]
>>484が何を言っているかよく分からないけど、
Cとドトネトでは思想がまるで違うからまず別名をつけることの必要性が
普通はないはずだし、そのくせ弊害はいくらも考えられるわけで。。

486 名前:デフォルトの名無しさん [2008/08/01(金) 22:39:22 ]
DBのアタッチで対処していたのですが不具合が生じたので、
セットアッププロジェクトでSQL2005EXPRESSのDBを作成したいのですが、
どうしたらいいでしょうか?
ググれというのならググりますので、キーワードを教えてもらえませんか?
「セットアッププロジェクト データベース 作成」でググっても欲しい答えはありませんでした。


487 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 04:27:05 ]
>>486
SQL Serverそのものはインストール済みという前提であれば
osqlなりsqlcmdなりにsqlを食わせればいい。

488 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 10:14:13 ]
>>487
ありがとうございます。
理解できました。

489 名前:デフォルトの名無しさん [2008/08/02(土) 10:25:15 ]
Dim filename As String = "general\playertable.nrd"
Dim target As BinaryReader
If File.Exists(filename) Then
target = New BinaryReader(File.Open(filename, FileMode.Open, FileAccess.Read))
Else
Return "NoName"
End If
'playertable.nrd からプレイヤー名を探して返す

ファイルが存在するときに、target = ... の行で固まり、しばらく待つと StackOverflowException が出てしまいます。
どうやら File.Open の中で何か嫌なことが起こっているようなのですが、どのようにすれば解決するでしょうか。
よろしくお願いいたします。



490 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 11:19:54 ]
>>485
> >>484が何を言っているかよく分からないけど、
  imports 別名 = 名前空間.コンテナ要素
の事だろJK

491 名前:デフォルトの名無しさん [2008/08/02(土) 22:38:55 ]
ConfigurationManagerの使い方について質問です。
いま一つのslnファイルにWinアプリとWebアプリの2つを
組み込んでいる状態で、ConfigurationManagerを書く場合、
 Winアプリのソースに記述 → app.configを参照
 Webアプリのソースに記述 → web.configを参照
という認識で合っていますか。


492 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 00:23:23 ]
>>490
そっかVBはC#と違って名前空間内のクラスや構造体にも別名付けられるんだったね。

俺もMyの下に自動生成される、リソースへのアクセスのお助けクラスに
別名付けたりするけど、普通は出来るからってあまりやらない方がいいんじゃないか。

493 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 00:36:37 ]
君にとっては残念かもしれないが、C#でも型に別名をつけられる

494 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 10:22:51 ]
そういう意味なく嫌味な言い方するなよ。
別名付ける場合はC#もVBと同じルールみたいだね確かに。


495 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 19:24:15 ]
VB.NETの無償の開発環境としては、Visual Basic 2008 Express Editionを利用すればいいんですよね?

496 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 19:37:36 ]

     ヘ⌒ヽフ
    ( ・ω・)   そうどす
    ハ∨/^ヽ
   ノ::[三ノ :.'、
   i)、_;|*く;  ノ
     |!: ::.".T~
     ハ、___|
"""~""""""~"""~"""~"

497 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 19:46:17 ]
>>496
ありがとうございます。
VB.NETのアプリケーション開発入門と、データベース開発入門の本を買ってこれから勉強しようと思っているのですが、
わざわざ Visual Basic 2005 Express Edition を使わなくても、特に互換性に問題は無いと考えていいのですよね。

498 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 19:54:24 ]
>>497
Express EditonはSQLServerの常設DBを扱えない。
その本がそれを前提にしているなら全く同じとは行かない。
少々の違いはアドリブで何とかなるなら問題ない。

499 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 20:07:01 ]
>>498
ありがとうございます。
やはり無償では限界がありますよね…
しかし、ソフトを買うお金も無いのでExpress Editonで試してみようと思います。

ところで、VB.NETを学ぶためにはどの資格を取得すればいいのでしょうか?
ただ自分で勉強したというだけでは、いまいち説得力が無いように感じますので。

MCADを取得すればいいのかとも思ったのですが、テキストが見つからず、どうやって勉強すればいいのか分からないのです。



500 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 23:46:20 ]
学ぶために先に説得力がいるとは不思議なやつだw


501 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 23:56:47 ]
資格マニアか履歴書に書きたいか。そんなところでしょ。


502 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 01:54:10 ]
で、MCAD(MCSD)の勉強方法はどうしているのでしょうか?

503 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 02:04:25 ]
MSのサイトみたら業務経験一年以上って書いてあるが

504 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 04:19:02 ]
つまり、MCADを持っている人はほとんどいない。そんな資格を取らずとも「できます」とハッタリかましておけばいい
と、そういうことで間違いないでしょうか?

505 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 13:33:01 ]
>>500-501 >>503
おまいら、こんなやる気のないスレ違い野郎に
よく付き合えるな。

506 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 15:58:29 ]
PropertyGridの説明ペインの高さのサイズを設定したり固定したりはどうすればできるでしょうか?
上記が無理な場合、サイズを変更した際にイベントは取得できるでしょうか?

507 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 19:43:43 ]
>>506
たぶんもっといい方法があると思うけど。

PropertyGridの内部コントロールの中に説明ペインがある。

具体的には、PropertyGrid.ControlsからGetType.ToStringが
"System.Windows.Forms.PropertyGridInternal.DocComment"
のものを見つければいいと思う。

もっと簡単にTextの値が"説明ペイン"のコントロールを探してもいいかもしれないが
日本以外のロケールではこの方法はだめだろうね。

508 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 09:50:37 ]
>>507 ありがとうございます

509 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 10:56:25 ]
vs2005です。

テキストボックスをそのまま画像に落とす方法ってありますか?
画像のサイズは、幅がテキストボックスと同サイズで、
高さがテキストの入力されている分だけとしたいです。
よろしくお願いします。



510 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 12:17:00 ]
どういたしまして

511 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 13:29:47 ]
>>509
高さがテキスト分ってことはスクロールしないと見えない下のほうも含めてってこと?
内容とフォントとかの設定ひろってきて、自分でビットマップ作って描画するのがいいんじゃ?

512 名前:509 mailto:sage [2008/08/06(水) 14:40:38 ]
>>511
はい、今その方法でいけました!
お手数お掛けしました!!
あーざーす!

513 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 14:00:00 ]
ピクチャーボックスの1から2に画像をBitBltで転送したいのだけど2に何も表示されません、どこが間違ってますか?

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PictureBox1.Image = System.Drawing.Image.FromFile("C:\WINDOWS\大草原の風.bmp")
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim g As Graphics
Dim hDC As IntPtr
Dim hDC2 As IntPtr
Dim re As IntPtr
Dim bmp As New Bitmap(256, 256)
g = Graphics.FromImage(bmp)

hDC = g.GetHdc()
hDC2 = GetDC(PictureBox1.Handle)

re = BitBlt(hDC, 0, 0, bmp.Width, bmp.Height, hDC2, 0, 0, SRCCOPY)

PictureBox2.Image = bmp
PictureBox2.Refresh()

g.ReleaseHdc(hDC)
g.Dispose()
bmp.Dispose()
End Sub

514 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 14:02:55 ]
そもそもなんでBitBlt使うの?

515 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:19:27 ]
VB6でずっと使ってたから、あとVB.netでもGraphicsクラス使うより
速いと聞いたからです。
乗り換えを決意してからまだ数日なので手探り状態でよくわかってなくて・・・

516 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:23:52 ]
P/Invokeは普通に出来ることを普通にやれるようになってから手を出そうな。
P/Invokeは基本的に自己責任ってやつだ。
人に試してもらいたかったらとりあえずP/Invokeの宣言部分もアップするべし。

見ただけで気が付いたのはbmp.Dispose()が余計。


517 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:24:52 ]
よほどの事をしない限り大抵はむしろ多少遅くなるから使わなくていい

518 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:28:24 ]
VB6時代には、VB使いは必要もないのにAPIを使いたがると言われたものだが、
伝統は引き継がれていた。

519 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 16:35:22 ]
宣言部分は最初長過ぎで弾かれて・・
Public Declare Function BitBlt Lib "gdi32" Alias "BitBlt" _
(ByVal hDestDC As IntPtr, ByVal x As Integer, ByVal y As Integer, _
ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As IntPtr, _
ByVal xSrc As Integer, ByVal ySrc As Integer, ByVal dwRop As Integer) As IntPtr
Public Declare Function GetDC Lib "user32.dll" (ByVal hwnd As IntPtr) As IntPtr
Const SRCCOPY As Integer = &HCC0020
Public Declare Function ReleaseDC Lib "user32" Alias "ReleaseDC" _
(ByVal hwnd As IntPtr, ByVal hdc As IntPtr) As IntPtr

速度が変わらないならBitBlt使わなくてもいいんだけど
使い方が分からなければ自分で比較検証もできなくて
困ってますアドバイスお願いします。



520 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 16:56:43 ]
いま少し前進した、
bmp.Dispose()削る
そして実行してボタンを押したあと、フォームを最小化して
もっかい大きくしたら表示されてた
もう少しだがんばります。

521 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:02:11 ]
解決しました、
PictureBox2.Refresh()を
PictureBox2.Invalidate()に変えたらできました
Refresh使ってるコードはあっちこっちで見かけたのに
みんな使えてるのかな?
もっと勉強しますありがとうございました。。

522 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:16:53 ]
>>521
PictureBox2.Refresh() も削る


523 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:41:22 ]
ReleaseDC(PictureBox1.Handle, hDC2)を追加
リソースリークをおこしてる。IntPtrはGCで回収はしてくれないぞっと。


524 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:44:19 ]
どう考えてもこれが最速だと思うのだが
PictureBox2.Image = PictureBox1.Image

ビットマップに一度落とすにしろこれでいける
Dim srcimg As Image = PictureBox1.Image
Dim img As New Bitmap(srcimg.Size.Width, srcimg.Size.Height)
Using g As Graphics = Graphics.FromImage(img)
 g.DrawImage(srcimg, 0, 0)
End Using
PictureBox2.Image = img


525 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 18:52:26 ]
513じゃないけど、BitBltの動作の検証用のコードかもしれんのに
文句いってどうするよ。

文句いってる奴ってGDI+にはBitBlt相当の機能ってないから
実際よく使われてること知らないんじゃないの?

つーかBitmapをDisposeするなとかこいてる奴に突っ込まれたくないだろうw

526 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 19:32:31 ]
実際Disposeしちゃいけない場面だし

527 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 19:34:25 ]
ピクチャボックスから使っているビットマップをDisposeするとピクチャボックスが例外おこす。
Disposeするならピクチャボックスから使われなくなったタイミングでしないといけない。
速度比較するなら何百回も繰り返さないとまとまった時間にならないから
画像を入れかえたりクリアするタイミングでDisposeしたほうがいい。

528 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 19:45:58 ]
>>526
そこは済まん513のコード読まずに早とちりしたw

529 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 19:51:33 ]
連続で質問して申し訳ないのですが、さっきのを一歩進めて
こんどはBitmapからPictureBox2に転送してみました
あってると思うのだけど何故表示されないのでしょうか?

Dim g As Graphics
Dim g2 As Graphics
Dim hDC As IntPtr
Dim hDC2 As IntPtr
Dim re As Integer

Dim srcimg As Image = Image.FromFile("C:\WINDOWS\大草原の風.bmp")
Dim bmp2 As New Bitmap(srcimg.Size.Width, srcimg.Size.Height)

g2 = Graphics.FromImage(bmp2)
g2.DrawImage(srcimg, 0, 0)

Dim bmp As New Bitmap(bmp2.Width, bmp2.Height)
g = Graphics.FromImage(bmp)

hDC = g.GetHdc()
hDC2 = g2.GetHdc()

re = BitBlt(hDC, 0, 0, bmp.Width, bmp.Height, hDC2, 0, 0, SRCCOPY)

PicMap.Image = bmp
PicMap.Invalidate()

g.ReleaseHdc(hDC)
g.Dispose()
g2.ReleaseHdc(hDC2)
g2.Dispose()



530 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 19:57:38 ]
PicMapはPictureBox2の間違いです、すみません

531 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 20:10:53 ]
>>529
いっちゃ悪いけど人に見てもらうんだからもう少し読みやすいコード書けよ。

とりあえず数字のサフィックスつけた変数名なんて論外。
変数名っていうのはそれが意味するものがわかるように命名するんだよ。
Src(Source)とかDest(Destination)とかTargetとか使ってくれ。

あと変数の宣言は、できる限り初期化と一緒に一番最初に使う直前でやってくれ。

532 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 22:04:23 ]
>>513
これよくよく試してみるとPictureBox1の範囲をスクリーンキャプチャ
したことになってるな、
NET難しぃ挫折しそうだ・・・

533 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 22:15:30 ]
いやどう見ても.NET無関係の部分だが

534 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 22:22:20 ]
BitBltはディバイス依存の激しい命令だから、
どちらかがリアルのディバイスかそれとコンパチブルの
ビットマップじゃないとうまく行かない気がする。
Win32でも結構はまる部分だ。
たしかに.NET関係ないな。

535 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 20:00:02 ]
DataGridView の行を27行ずつ削除(非表示)しながら、
画面のハードコピーをその都度画像ファイルに保存しようと考えています。

以下のコードで画像は保存されるのですが、DataGridView の非表示が反映されません。
(全部同一の画像が保存される)
For 〜 next で繰り返さないで、手動で行った場合は大丈夫なのに、
自動で保存した場合だけ削除(非表示)が追いついてないのは納得いきません。
その辺の事情とかご存知の方はおられますでしょうか?


536 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 20:01:42 ]
以下、コードです。
----------------------
Dim GridCount As Integer = DataGridView1.Rows.Count 'DataGridView の行数
Dim PrintCount As Integer = ((GridCount - 1) \ 27) + 1 'ハードコピーの枚数
Dim DelCount As Integer = 0 'DataGridView 削除行数

For i As Integer = 0 To PrintCount - 1

Call CaptureForm(Me) 'ハードコピー取得関数
memoryImage.Save("D:\TOPY\image" & i & ".bmp") 'ハードコピーをファイルに保存
memoryImage.Dispose() 'ハードコピーの解放

For ii As Integer = 0 To 26

If DelCount < GridCount Then

DataGridView1.Rows(DelCount).Visible = False
DelCount += 1

End If
Next

Next

537 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 21:21:59 ]
毎回DataGridView.Refresh呼べ

538 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 00:06:48 ]
テキストボックスでEnable = Falseにしないで、
テキストボックスの中のテキストを範囲選択出来なくする方法ありませんか?

539 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 00:20:55 ]
もうLabelにしちゃえよ



540 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:15:28 ]
ReadOnlyにして背景を白くするんじゃだめ?
選択はできちゃうけど。

541 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 14:09:29 ]
VB.NETでバッチEXEを作ってそのEXEから成功したか失敗した
かの戻り値を取得したいのですが、可能でしょうか?
また、もし可能なら方法を教えてください。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<217KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef