VB.NET質問スレ (Part22 ..
[2ch|▼Menu]
596:デフォルトの名無しさん
07/08/09 12:41:55
>>593
内部のイベントを全て自作のイベント(MouseHoverExみたいな)にまとめて外部に公開するってことですかね。
そうするとやっぱりそのコントロール内でそれぞれのコントロールにマウスを合わせる度に同じイベントが発生
してしまいます。
Clickイベントなどはこの方法で実装しています。

597:デフォルトの名無しさん
07/08/09 12:42:35
>>595
一個前のスレの363以降だね。
っていうか、593のヒントから自分でゼロから考えた方が楽しいぞ

598:デフォルトの名無しさん
07/08/09 12:43:31
>>594
じゃあさ、MouseHoverイベントを使って
何をやりたいのかも書いておいたほうが回答もらいやすいぞ。
君がこれだ!って思う方法が可能とは限らないんだから。

599:デフォルトの名無しさん
07/08/09 12:57:13
>>598
やりたいことはメニュー型のランチャーのサブメニュー項目のようなコントロールです。
使ってない人にはさっぱりかもしれませんがメニュー型ランチャーのOrchisでいう
サブメニューのような感じです。
画像とテキストを含んだユーザーコントロールにMouseHoverすると新しいFormを
Showすると言うような動きがしたいです。

>>597
了解です。
しばらくちゃんと自分で考えてみます。


600:デフォルトの名無しさん
07/08/10 18:19:38
vb2003でGraphicsオブジェクトを使用して画像を合成しています。

単純に合成はできるのですが、乗算で合成したいなぁ、と思って
Graphics.MultiplyTransformなるメソッドを使用してみたのですが
乗算になっているようには見えません。

Photoshopでレイヤーを乗算にして描画される、あのイメージだったんですが
このメソッドで良かったのでしょうか?


g.DrawImage(imgA, rect)

Dim transformMatrix AS New System.Drawing.Drawing2D.Matrix
transformMatrix.Translate(1.0F, 1.0F)
g.MultiplyTransform(transformMatrix, System.Drawing.Drawing2D.MatrixOrder.Append)

g.DrawImage(imgB, rect)


こんな感じでやってます。

601:デフォルトの名無しさん
07/08/10 19:35:40
ドキュメント読めばわかるが、MultiplyTransformはワールド変換のためのメソッド。
つまり座標変換。

System.Drawing.Graphicsというかその基になってるGDI+には色合成処理は用意されてない。
アルファブレンドはできるけど。
ので頑張って自前で実装するしかない。探せば見つかるかもしれないけど。

URLリンク(blog.livedoor.jp)
DelphiのコードだけどGDI+の乗算カラーフィルタのサンプルを見つけた。
参考になるかもしれない。

// そういえばPaint.NETは今どうなってんだろ。

602:デフォルトの名無しさん
07/08/10 19:42:26
そりは変換行列の「積」なんでは?w

レタッチソフトの「乗算」の処理内容を具体的に知らないので抽象的なアドバイスになって
申し訳ないけど、たぶんカラー行列を使うんじゃないかな?(DrawImageのオーバーロードを見るべし)

603:デフォルトの名無しさん
07/08/10 22:38:02
IME制御の質問です

アルファベットしか入力し得ないテキストフィールドなので、そのフィールドでの
入力時はIMEの変換モードを英数に固定しようとして

hWnd = TextBox1.Handle
hIMC = ImmGetContext(hWnd)
If hIMC <> 0 Then
ImmSetConversionStatus(hIMC, IME_CMODE_ALPHANUMERIC, IME_SMODE_NONE)
ImmReleaseContext(hWnd, hIMC)
End If

のようなことをFormのActivate時に実行してみたのですが、指定したフィールドだけでなく、
全ての項目にこの設定が適用されてしまいます。

その項目だけに効果を与えるにはどうすればよいのでしょうか?

604:デフォルトの名無しさん
07/08/10 22:50:04
>>603
MSDNライブラリのTextBoxのメンバ一覧を穴があくまでじっくり読む

605:デフォルトの名無しさん
07/08/10 23:09:33
>>604
お返事ありがとうございます。
ただ、もし ImeMode の事を言われているのであれば、それが使えない環境なので・・・・・・。
そうでないのであれば、ちょっと判りませんでした。


606:デフォルトの名無しさん
07/08/11 00:47:24
>>605
それどういう環境?

607:デフォルトの名無しさん
07/08/11 00:59:18
.NET Compact

608:デフォルトの名無しさん
07/08/11 11:37:08

すみません、教えてください。
Labelコントロールにおいて、現れている文字列を、マウスの操作でクリップボードに
コピーすることは普通はできないと思いますが、もしかしてそういうことができるように
するためのプロパティとかは存在しないでしょうか?

どうしても不可能な場合はボタンかまたはコンテキストメニューでもつけて
クリップボードにコピーするなどは考えられるのですが、テキストボックスと同様に
手軽に使えて、しかも文字列が変更されてしまわないものが望みです。

ちょうど、プロパティ・ダイアログの中のURLなどがそのようにできるものでした。
同様の機能を実現するのには特別なコントロールを自作する必要があるでしょうか?
すみませんがよろしくお願いします。


609:デフォルトの名無しさん
07/08/11 11:47:05
TextBoxでReadOnlyにしたらいいんでないの?
あとはボーダーとか消してラベルっぽくすれば。


610:デフォルトの名無しさん
07/08/11 12:26:22
>>609

おお、TextBox に ReadOnly というプロパティがあったのですね!
わかりました、ありがとうございます!
いろいろ新しくなっているのですね!助かりました。



611:デフォルトの名無しさん
07/08/11 12:33:18
おい大昔からなかったかい?


612:デフォルトの名無しさん
07/08/11 12:43:08
板違いかもしれません。ですが質問します。
C#.NETとVB.NETの違いって何ですか?

調べてみると、(触り程度)
C#.NETにメモリーを切る概念が無くなったと。
だったら、方言とコンパイルの速度だけの違いになりますか?

613:デフォルトの名無しさん
07/08/11 13:56:52
ハァ?

614:デフォルトの名無しさん
07/08/11 13:59:46
メモリー切る機能ってなんだよ

615:デフォルトの名無しさん
07/08/11 14:26:34
俺のおじいちゃんがメモリ確保することを「切る」と言っていたが
21世紀にその言葉を聞けるとは思わなんだ

616:デフォルトの名無しさん
07/08/11 17:57:37
万能動詞、切る
何が何でも切るって言うんだぜ?

617:デフォルトの名無しさん
07/08/12 10:06:08
コンソールアプリケーションの質問です

ReadLineなどで、画面から読み込む文字列を
[******]のようにマスクして、読み込む方法はあるのでしょうか?

すみませんが、よろしくお願いします

618:デフォルトの名無しさん
07/08/12 13:05:52
>>612
VB.NETはリフレクションを使用するコードが勝手に生成されて凄く遅くなることがある
回避はできるからそれさえ注意すれば一緒

619:デフォルトの名無しさん
07/08/13 09:08:53
言語の違いなど飾りです。
PGさんにはそれがわからんとです。



620:デフォルトの名無しさん
07/08/13 10:44:01
つまらん

621:デフォルトの名無しさん
07/08/13 14:16:59
Graphicsクラスで1ピクセルの点をPenを使って書く時って
Graphics.DrawLine(Pens.Black, New PointF(10, 10), New PointF(10.1, 10.1))
のようにPointF使うしかないの?

622:デフォルトの名無しさん
07/08/13 15:21:56
もう少しものの聞き方を勉強しなおした方がいいよ。

623:621
07/08/13 15:33:05
>>622
ごめんなさい。

624:デフォルトの名無しさん
07/08/13 16:24:46
DrawLineはPointFを引数にするものもあるけど、Singleを引数にしているものもあるだろ?
あとなんで1ピクセルが0.1だと思ってるんだ?

625:621
07/08/13 17:38:46
>>624
Graphics.DrawLine(Pens.Black, 10, 10, 10, 10)
だと何も描かれないですし、
Graphics.DrawLine(Pens.Black, 10, 10, 11, 11)

Graphics.DrawLine(Pens.Black, 10, 10, 11, 10)
だと2ピクセル分描かれます。
10.1を指定するときれいに1ピクセル分描かれるのですが。
何かとんでもないトコを見落としているのかなぁ。
もうちょっと調べてみます。

626:デフォルトの名無しさん
07/08/13 17:48:01
ピクセルの操作はBitmap.SetPixel/GetPixelで。
短いラインがどのなんドットなるかなんて、
ディスプレイディバイスの種類が違ったり、
スケールとか座標系いじったりしたら意味ないだろ。

627:デフォルトの名無しさん
07/08/13 18:05:15
>10.1を指定するときれいに1ピクセル分描かれるのですが。
あほすぎて話にならん。
そんなのディスプレイの都合上、1ピクセル分の直線が引かれているように見えるだけだろ。
プログラム上では0.1ピクセルの直線を引いてる。
結果さえよければどうでもいいのか?

説明が面倒なので、答えを書く。
お前が書きたい1ピクセルの点というのは、数学的に言えば「一辺1ピクセルの面」だ。
面を書くのはDrawLineではない。

e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)

628:デフォルトの名無しさん
07/08/13 18:07:38
>>626
.netじゃ座標や幅の基本単位がピクセルだから関係ないんじゃね?
twipならディスプレイの設定で変化してくるが。

629:621
07/08/13 18:17:21
>>627
もちろんFillRectangleやSetPixelを使うことは知っています。
1ピクセルの点をPenを使って書く時に10.1のように
書くしかないのですかという質問なのですが。


630:デフォルトの名無しさん
07/08/13 18:17:57

.NET2.0用に作成したアプリケーションは、3.0しかインストールしていないWindowsでは
動作しないのでしょうか?


631:デフォルトの名無しさん
07/08/13 18:24:08
ポカーン

632:デフォルトの名無しさん
07/08/13 18:24:52
>>629
1x1のビットマップを作成してDrawImageという手もあるけど
それならまだ10.1の方がスマートな気がする

>>630
3.0は、2.0に一切手を入れずに新機能を追加しただけのもの
MSを信じるなら全く問題ないはず

633:デフォルトの名無しさん
07/08/13 19:13:37
>>629
だからよ、お前はDrawLineの仕様がわかってないって言われてるの。
DrawLineはあくまで座標ペアで指定された2つの点を結ぶ直線を描画するんだ。
「点」ってのは直線じゃないだろう?
Graphics.DrawLine(Pens.Black, New PointF(10, 10), New PointF(10.1, 10.1))
お前のこれは、「見かけ上」1ピクセルの点に見えるだけで、プログラム上じゃ(10, 10)to(10.1, 10.1)の直線なワケ。
お前が厳密に1ピクセルの点を書きたいわけじゃなく、ただ見かけだけそうなってりゃいいや、っていうならそれでいいよ。
ただ、そんなのに甘んじるようなお前は果てしなくセンスが無いってだけだ。

634:デフォルトの名無しさん
07/08/13 19:25:55
Penで点を描くのは確かにおかしいかも

635:621
07/08/13 21:25:54
>>633
すみません。怒らせちゃって。
確かにおかしいんですよ。
僕も通常点を描くだけならFillRectangleで済ますんですが
ただ描画するのは違うクラスでこのクラスはもう変更きかなくて
Penと座標しか指定できないので
困ってたんです。
で、やっとこさ10.1というのを発見してあなたの言う見かけだけ
はできたのですが、他に何かないかなと思った次第でして。
あなたと私はたぶん似ているんだと思います。
私もDrawLineの仕様を言いたいですが、
Penと座標しか指定できない場合、10.1と指定するのことに
甘んじたくなくて質問したんです。
あなたも同じ状況なら他になにかないか探すと思います。


636:デフォルトの名無しさん
07/08/13 21:31:33
そもそもPenと座標しか指定できないのになんで他の方法を探してたの?

637:621
07/08/13 21:32:58
>>632
ありがとうございます。
少し気が楽になりました。

638:621
07/08/13 21:36:12
>>636
他の方法というのは
例えば独自のPenを作成するとか
Penのプロパティにそういうのが指定できるとか
もしあったらと思いまして。
ですのでPenを使って何かないのかなと質問しました。


639:デフォルトの名無しさん
07/08/14 02:14:46
フォームクラス以外のクラスからフォーム上のコントロールを操作したいとき、
My.Forms.Form1.TextBox1.text = "2ch2ch"
とか使う?それとも引数で渡す?
俺はMSがせっかく用意してくれてるんだからMy使うんだけど、みんなはどっち?

640:デフォルトの名無しさん
07/08/14 04:42:20
TreeView や ListView 上の ListViewItem というのは、
Selected 状態と Active 状態とで異なるでしょうか?

Explorer上の TreeView や ListView では、点線でかこまれただけの状態の Item
と、実際に選択されて薄いパープル色あるいはグレーのバックカラーになって現れている
場合の2種類がありますが、それらに対応するものなのでしょうか。



641:デフォルトの名無しさん
07/08/14 04:51:13
はて、Active 状態ってのは一体どのプロパティがどの値になってるのを指すんだ?

642:640
07/08/14 05:21:30
>>641

そうですね、よくわからないんですが、OnItemAvtivated() の Protected メソッドが
動くときのイベントが発生したとき、という意味のつもりでした。

Explorer では「単なる点線囲み状態」 と 「BackColorが色付く状態」 の両方があったので
そういう違いがある2つの状態というものがあって、それが Selected とは別の何かなのかなと
思ったのでした。

そういうもの自体存在しないのでしょうか。

643:デフォルトの名無しさん
07/08/14 09:43:48
OnItemActivate の二つ先に Activation プロパティがある。その解説読んでみ。

> 「単なる点線囲み状態」「BackColorが色付く状態」
ListViewItem にそれぞれ対応するプロパティがある。

TreeView は単一選択なんでこの辺は無関係。

644:デフォルトの名無しさん
07/08/14 09:49:15
>>639
ほんとは引数で渡した方がいい
テキストボックスも直接公開するんじゃなくてForm1にString型のプロパティを定義した方がいい
でもどうせ使い捨てなら別にどうでもいい

645:640
07/08/14 14:15:33
>>643

ご指導どうもです、この 「点線囲み状態」 は ListViewItem の Focused プロパティに
関係ありそうですね。さらにあちこち見て調べてみます。
ありがとうございました!


646:デフォルトの名無しさん
07/08/14 15:07:48
>>627
プププ何コイツ
久々に笑わせられたぜww

>数学的に言えば「一辺1ピクセルの面」だ。

何が数学的だよ1ピクセルはプログラム上は点に決まってんじゃん。www
>e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
ちゃんと4ピクセルの面を指定しるじゃん。wwwうぇwww
FillRectangleってのは領域の内側を塗るんだよ。おバカさん
内側ってのは右辺と下辺から1ピクセル分引いた値。w
で結果1ピクセル分だけ塗られているだけだぽwww

直線上にない異なる3点以上を指定しないと面にならないことくらい
消防でも知ってるっつうの。

>一辺1ピクセルの面 プププププww
一番小さい面は3ピクセルの三角形だよwwwwww

ってかムキになってる638はその前に氏ねよwww。

こいつらくだんね。


647:デフォルトの名無しさん
07/08/14 15:15:40
( ゚д゚)ポカーン

648:デフォルトの名無しさん
07/08/14 16:09:05
>>646
>FillRectangleってのは領域の内側を塗るんだよ。おバカさん
>内側ってのは右辺と下辺から1ピクセル分引いた値。w

FillRectangleには下辺の指定とかないんだけど、勝手に定義を変更しているあなたはなんなの?

>e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
これは座標(10,10)から始まる幅1高さ1の面ってことだろ?

ってか文章からして釣りだよなw

649:デフォルトの名無しさん
07/08/14 16:14:46
>>635
>僕も通常点を描くだけならFillRectangleで済ますんですが
>ただ描画するのは違うクラスでこのクラスはもう変更きかなくて
>Penと座標しか指定できないので
>困ってたんです。
こういう背景も書かずに、いきなり>>621みたいな聞き方するから、Bitmap.SetPixel/GetPixelやFillRectangleなんて話がでてきたんではないの?

『定義の使用上、通常1ピクセルの直線は描画できないDrawLineで、
1ピクセルの点を描画する方法はありませんか』
とか聞けばいいのに。

650:デフォルトの名無しさん
07/08/14 17:13:09
>>648
>これは座標(10,10)から始まる幅1高さ1の面ってことだろ?
これ読んだら吹いたwww

お前633で「点」ってのは直線じゃないだろう?
って言ってたじゃん。
点は直線じゃないが面になるのかよwww

お前まさか座標のことピクセルとピクセルの間だと思ってないかww
GetPixelでカラー取得できなくなるっちゅうのwwww

Rectangle( 10, 10, 1, 1)ってのは
(10,10)(10,11)(11,10)(11,11)の4点を表すんだよwww
DrawRwctangleやってみろよwwうぇぇぇぇwwww

>1ピクセルの面なんてねぇぇぇよwwうふ


651:デフォルトの名無しさん
07/08/14 18:14:34
>>650
俺は627で「1ピクセルってのは点じゃなくて幅1高さ1の面だ」って言ってるんだが…。
だからこそ1ピクセルの「いわゆる」点を書くのは、面を塗りつぶす
e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
だと言うているんだが…?
目に見える「点」なんて存在しないだろ?
お前の言いたい事がてんでわからん。


652:651
07/08/14 18:16:58
>>650
e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
ちなみにこれは座標(10,10)だけが塗りつぶされます。
あおる前に試してから書き込め、糞が。

653:デフォルトの名無しさん
07/08/14 19:52:58
どうでもいい

654:デフォルトの名無しさん
07/08/14 19:55:35
>>558

655:デフォルトの名無しさん
07/08/15 11:52:54
VB.NETからエクセルに出力する時の質問です。

データベースの内容をエクセルに出力したいのですが(行は100行×列は10列くらい)、
この場合、VB.NETからエクセルのセルに直接書き込んだ方が早いですか?
それとも、エクセルのマクロを呼び出して、マクロ側でデータベースの内容を
セルに書き込んでいった方が早いですか?


656:デフォルトの名無しさん
07/08/15 12:23:04
後者

657:デフォルトの名無しさん
07/08/15 15:17:28
教えてください。
DataGridViewにて、指定したセルの左上の座標を取得する方法はありますでしょうか?
ありましたらその方法を教えてください。
宜しくお願いします。

658:デフォルトの名無しさん
07/08/15 15:22:30
DataGridViewのメンバに目を凝らすんだ

659:657
07/08/15 15:52:18
>>658
AccessibilityObjectプロパティを利用して解決できました。


660:デフォルトの名無しさん
07/08/15 20:51:23
Windowsフォームで別スレッドからコントロールを操作するには?
(URLリンク(www.atmarkit.co.jp))
引数がない場合、サンプルのように次の書き方でOK。

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  TextBox2.Focus()
 End Sub
 ↓
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 Dim t As New Thread(New ThreadStart(AddressOf worker))
 t.Start()
 End Sub

 Delegate Function FocusDelegate() As Boolean

 Sub worker()
 ' textBox2.Focus()の実行
 Invoke(New FocusDelegate(AddressOf TextBox2.Focus))
 End Sub

次のように引数も渡したい場合、どのように書きなおせばよいのでしょうか?
 Dim dtNow As DateTime = DateTime.Now

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 TextBox2.Text += dtNow.ToString() & vbcrlf
 End Sub
 ↓
 ?

661:デフォルトの名無しさん
07/08/16 09:59:26
文字列のフォーマットについて教えてください。

"abcdefgh" という文字列を "abcd-ef-gh" という風に変換したい場合、
VB6の時は
Format("abcdefgh","@@@@-@@-@@")
で出来ました。
これをVB2005で表現するには、
VB6.Format("abcdefgh","@@@@-@@-@@")
といった風にしかできないのでしょうか?
VB6.Formatを使わずに簡単に上記操作が出来る方法があれば教えてください。

662:デフォルトの名無しさん
07/08/16 10:07:34
SubstringでぶったぎってConcatで繋げればいいよ

663:デフォルトの名無しさん
07/08/16 12:51:09
ToStringメソッドを調べると良いと。

664:デフォルトの名無しさん
07/08/16 13:05:33
TreeViewについて教えてください。

あるノードが、あるノードより上にあるか下にあるか
調べたいのですが簡単にわかる方法はありますでしょうか?

If hogeNode.index > hoge2Node.index Then
End If

ですと階層が同じでないと比較できないので困っています。

よろしくお願いします。

665:デフォルトの名無しさん
07/08/16 13:22:03
上?

666:デフォルトの名無しさん
07/08/16 13:29:26
>>665
ツリーを全展開したときに、より左上にあるものが上といった感じです。

667:デフォルトの名無しさん
07/08/16 13:34:31
TreeNode.Parentを辿って数えれば?

668:デフォルトの名無しさん
07/08/16 13:48:04
右上にあっても上?

669:デフォルトの名無しさん
07/08/16 13:58:41
上位という意味だろ
より親

670:デフォルトの名無しさん
07/08/16 15:34:46
右上も上です。

671:デフォルトの名無しさん
07/08/16 16:02:58
プロパティの質問です。
会社の先輩にクラスのフィールドは必ずプロパティで介せよ!って言われたのですが、
以下のコードのようにmfield1とmfield2の違いがよくわかりません。
mfield1はプロパティ内で入出力操作みたいなことはできるのですが、下のコードのように
特に何もしないプロパティなんて意味あるのでしょうか?こういうプロパティがクラスに沢山あるのですが、正直面倒です。
先輩に聞いたら元請にそう指示されたと言ってましたが・・・
Public Class Class1
  Private mfield1 As String
  Public mfield2 As String

  Public Property Field1() As String
    Get
      Return mfield1
    End Get
    Set(ByVal value As String)
      mfield1 = value
    End Set
  End Property
End Class
確かに以前Javaの引継ぎの仕事で貰ったソースも、getter、setterが無数に書かれてましたが、return とクラスの変数の割り当て以外何もしていませんでした。
いまいち利点がわかりません。

672:デフォルトの名無しさん
07/08/16 16:11:34
>>671
そのうち昔は無駄なことをしていたなぁ
ということになるからそれまでは我慢

673:デフォルトの名無しさん
07/08/16 16:41:00
C#3.0をまて

674:デフォルトの名無しさん
07/08/16 16:55:15
>>671
読み書きの処理をインターセプトして値のチェックや変換ができるというのも利点だが、
そういう処理の必要でない単純なプロパティを含む場合の利点としては
フィールドと違いInterfaceにしたり継承でoverrideできること。
特にリモート呼び出しなどではInterfaceであることは重要になる。

その為プロパティが花盛りなのは事実だが大半が単純な構造のプロパティであることから、
プロパティによるコードの増大を何とかしようとする動きはある。
1.IDEのサポート機能で強引にsetter/getterを大量生産する。
2.基本的な構造のプロパティを簡単な構文で書けるようにする。
3.パブリックなフィールドは自動的にプロパティにする。

1は現状のJavaやらC#で盛ん。
2と3は言語の拡張で対応。次版のVBやC#はこの方向。
3はあまりみないが、VB6のActiveXクラスのパブルックフィールドがこのやり方だった。


675:デフォルトの名無しさん
07/08/16 20:02:10
>660
解決しました。
660の質問は却下します。


676:デフォルトの名無しさん
07/08/16 21:38:41
>>664
nodeにlevelってプロパティがあった様な。

677:デフォルトの名無しさん
07/08/16 21:48:32
質問させてください。
ドラッグアンドドロップのコードを記述してるのですが、
ドラッグ元のオブジェクト名を取得するにはどうすればいいのでしょうか?

VB2005EEを使っています

678:デフォルトの名無しさん
07/08/16 21:54:51
オブジェクト名って何さ
型名? それともひょっとして変数の名前のこと?

679:デフォルトの名無しさん
07/08/16 22:09:06
>>678
picturebox1とかlabel1みたいなクラス?の名前のことです

680:デフォルトの名無しさん
07/08/16 22:14:08
1付きはForm1以外はクラス名じゃなくて変数名だと思うぞ
で、そんなもんは仮の名前なのでとれるわけもないが

結局その名前を使って何がしたいの?

681:デフォルトの名無しさん
07/08/16 22:14:30
おまえ却下てw


682:677
07/08/16 22:24:00
ドラッグ元の画像をドラッグ先の画像にドラッグアンドドロップしたときに
ドラッグ元の画像を非表示にしたかったのですが、ドラッグ元の情報を
どうやって取得したらいいのか分からなかったので質問しました。

683:デフォルトの名無しさん
07/08/16 22:29:25
DoDragDrop の返り値見てドラッグ元側が処理すればいい
ドラッグ元とかドラッグ先とかの状況が分からないから一般論だが

684:671
07/08/17 00:09:30
>>674
ありがとう。とりあえずプロパティにしておくのは間違いではないのですね。
ググルと既にJava界ではgetter setterでいろいろ賛否両論が行われてました(@ITの掲示板はついて行けませんでしたが…)
しかし、オブジェクト指向のソースとか何の為?って思う箇所が多々あって辛い。
周りに詳しい人もいないんで、何を頼りにすべきか…。デザインパターンとかとりあえず目を通した方が良いのかな。

685:デフォルトの名無しさん
07/08/17 10:49:21
質問です。
DataGridViewで、”スクロールバーが現在表示されているかどうか”を取得できるプロパティみたいなものはあるのでしょうか?
それともDataGridViewの高さ(幅)と、表示されている行(列)の高さ(幅)の合計を比較するしかないでしょうか?

686:デフォルトの名無しさん
07/08/17 13:40:41
DataGridViewを継承したコントロールですと、
HorizontalScrollBar.Visible
で判定できるみたいですね。
それでいってみます。

687:デフォルトの名無しさん
07/08/17 15:27:14
Textbox(Multiline)のIMEModeの挙動がおかしいです。

No Control に設定(デフォのまま)してあるのに、実行時に
普通に入力できていたのに突然、カナ入力になったり、
オフ固定になったりします。

フォーカスが、他のアプリなどへ移動して、再度該当の
TextBoxに来た時に症状がおきやすい様ですが、明確な
発生状況の原因は突き止められていません。

ネットで検索した所、似たような症例が見受けられたが、
クリティカルな回避方法が分かりません。

何か良い方法はありませんでしょうか?

688:デフォルトの名無しさん
07/08/17 21:52:19
以下のソースで文字をPictureBox1に描画してるのですが、
この文字を、BMP保存したい場合どうすればいいのでしょうか?

Dim g As Graphics = PictureBox1.CreateGraphics() ' PictureBox1のGraphicsオブジェクトを取得
Dim fnt As New Font("MS 明朝", 20, FontStyle.Bold) ' フォントオブジェクトの作成

g.DrawString("文字をを描画", fnt, Brushes.Blue, 50, 20) ' 文字を描画

'リソースを開放する
fnt.Dispose()
g.Dispose()

689:デフォルトの名無しさん
07/08/17 21:56:53
普段から直接描くんじゃなくてBitmapに描くようにすればいいよ

690:デフォルトの名無しさん
07/08/17 21:57:14
Graphics.FromImage(Bitmap)で取得したオブジェクトに対して描画してBitmap.Save
保存しない場合でもPictureBoxに直接書くよりBitmapに描画してDrawImageの方がいいと思うよ

691:デフォルトの名無しさん
07/08/17 22:04:38
>698,690
うまくいきました、ありがとうございます

692:デフォルトの名無しさん
07/08/17 22:58:20

すみません、教えてください。

TreeView において、+ 印をクリックしたときにも、MouseUp イベントが発生する
のですが、、

それを、Node 本体をクリックしたときと区別する方法はあるものでしょうか?
IsSelected プロパティを見てみたのですが、無関係のようで、どうしたらいいもの
かと思いまして。すみませんがよろしくお願いします。


693:デフォルトの名無しさん
07/08/17 23:13:02
NodeMouseClick とかじゃ駄目か
.NET 1.1 以前なら駄目か、じゃあ HitTest だな

694:デフォルトの名無しさん
07/08/17 23:26:06
>>693

どうもです。

2.0でしたが、NodeMouseClick でもやはり + 印の方でも反応していました。
HitTest でしたか。調べてみます、ありがとうございました!



695:デフォルトの名無しさん
07/08/18 08:47:26
>>692
TreeViewMouseDownで
マウスダウンポイント = New Point(e.X, e.Y)
選択ノード = ツリービュー.GetNodeAt(マウスダウンポイント)
範囲 = 選択ノード.Bounds()
If 範囲.Contains(マウスダウンポイント) Then
 ボディを選択した
Else
 +を選択した
End If

696:デフォルトの名無しさん
07/08/18 12:15:27
>>695

おお!!そうやってやるのですか!!!
すばらしい、どうもありがとうございました!!
助かりました!!!


697:デフォルトの名無しさん
07/08/18 15:07:21
VS2005のIDEですが、ソースコード・エディタ上でマウスであちこちクリックしたり、
検索で移動したり、「シンボルの検索結果」での選択で移動したり、とこれらの操作で
キャレットの位置が変わっていったとき、その位置を復元して逆たどるためのツールボタン
があったと思うのですが、

PCが壊れて、別のPCに変えて同じボタンと思われるものを使ってみたのですが、
同じその機能が働いてくれません。

この機能のボタンはありますよね。なんという名前のボタンかがわかりません。

(試してみたのは、「前の検索結果1の場所へ移動」「前の検索結果2の場所へ移動」
「前の場所へ移動」などですが、これらでは復元しませんでした。ツールボタンの欄で
右クリック->「ユーザー設定」->「編集」を選択->その中のボタンから選択してみました。)


698:デフォルトの名無しさん
07/08/18 15:13:24
そういうのって人に聞くより自分で実際やってみる方が早くないか?

それともIDEのメニューやツールバーのカスタマイズ方法を知らないの?

699:デフォルトの名無しさん
07/08/18 15:56:40
>>697

ですから、それをやってみたと書いていますが・・・。それでもできなかったもので。
           ↓
(試してみたのは、「前の検索結果1の場所へ移動」「前の検索結果2の場所へ移動」
「前の場所へ移動」などですが、これらでは復元しませんでした。ツールボタンの欄で
右クリック->「ユーザー設定」->「編集」を選択->その中のボタンから選択してみました。)


700:デフォルトの名無しさん
07/08/18 17:14:24
進む、戻る、かなんかのボタンだよね
俺も見つかられんのだわw


701:デフォルトの名無しさん
07/08/18 17:14:55
たしかすごい意外なとこにあった記憶はあるんだが…


702:デフォルトの名無しさん
07/08/18 17:46:36
分類:表示 の 一番下のほうにある 戻る か?

703:697
07/08/18 20:36:38
>>702

あー、それでした!!どうもありがとうございました!



704:デフォルトの名無しさん
07/08/20 01:05:24
質問なんですが、フォントスタイルに太字と斜体の両方を
設定した場合に、太字(もしくは斜体)のみを標準状態に
戻す場合のコードってどう書けばいいのでしょうか?

705:704
07/08/20 01:12:05
自己解決しました、お騒がせしました。

706:デフォルトの名無しさん
07/08/20 09:31:20
どれだけ下らなく稚拙な質問でも、同じ疑問を持ってるやつがいるかもしれないから、
自己解決した場合でも、解決法は書くべき。

現在のスタイル-太字
TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Xor FontStyle.Bold)

ちなみに
現在のスタイル+太字
TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Or FontStyle.Bold)

707:デフォルトの名無しさん
07/08/20 12:31:46
地獄への道は善意で舗装されている、という言葉の意味を706は噛み締めるべきだね。

そういう「善意」は、結局のところ、基礎の理解や自分の頭で考えることをスキップする
「コピペ馬鹿」を生み出すだけだと思うが。

708:デフォルトの名無しさん
07/08/20 13:14:31
>>707
善意から莫迦が産まれるとでも思ってんのか?
莫迦は元々莫迦なんだよ。

709:デフォルトの名無しさん
07/08/20 14:47:18
まあ少なくとも馬鹿を矯正するスレじゃないからね

710:デフォルトの名無しさん
07/08/20 16:43:07
質問答えたらだめじゃんw

711:デフォルトの名無しさん
07/08/20 17:36:01
コントロールを名前で選択するにはどうすればいいのでしょうか。

例えばForm1上にButton1があったとすると、
Dim btn As Button = hoge("Button1")
みたいなことがしたいのです。
ググると、Form上のコントロールのコレクションをFor eachで回して、名前が一致するかどうかで
探すというのは見つけたのですが、名称からダイレクトに選択したいです。

712:デフォルトの名無しさん
07/08/20 18:27:44
またコントロールを名前で選択したいです厨か


713:デフォルトの名無しさん
07/08/20 20:42:55
>>711
>Form上のコントロールのコレクションをFor eachで回して、名前が一致するかどうかで
>探す
という関数を作成すれば
>名称からダイレクトに選択
できますよ。

714:デフォルトの名無しさん
07/08/20 21:01:40
>>711
Form.Controls(string)
やめとけやめとけやめとけやめとけ

715:デフォルトの名無しさん
07/08/20 21:04:12
712じゃないけど(いや712は別に何も言ってないがw)
>>711みたいな「要求」は、ほとんどの場合勘違いの産物だと思うぞ。
ありていに言えば頓珍漢なんだよたぶん。

716:デフォルトの名無しさん
07/08/20 21:49:53
>>711は結局それで何がやりたいのだろう

717:デフォルトの名無しさん
07/08/20 21:53:11
ちゃんと理解してて目的があって使うならいいんだけど
>>711はそれ以外に方法がないと思い込んでるだけだろうな

718:デフォルトの名無しさん
07/08/20 23:06:46
ListView上をMouseでClickしたとき、何かのListViewItemをHitすると
MouseUpイベントが連続して2回立つ、ということはありうるでしょうか?

そういう現象が出て悩んでいました。

下に何もないところをClickしたときはMouseUpは正常に一回しか立たない
のですが、下にItemがあるところをMouseでClickすると、2回連続してMouseUpが
立つのでした。

そのためか、そのListViewItemは、選択された印のBackColorが付かず、
Selected状態になっているのかどうかわからないのでした。

MouseDownイベントを挟まずにMouseUpが2回連続するというのは変だと
思うのですが、どこを通ってきてそうなっているのかわからないのでした。
こういう現象になった方いらっしゃったら何かご指導ください。よろしくお願いします。



719:デフォルトの名無しさん
07/08/21 01:21:52
>>718
ありうるかどうかはdebug.printしてみればわかる。

720:デフォルトの名無しさん
07/08/21 07:53:11
DirextXを使用しているものから色を取得して判定したいのですが
Win32APIのGetPixel等では不可能のようでしたが、何か良い方法は
ないでしょうか。

721:711
07/08/21 09:20:41
>>714さんの方法でできました。ありがとうございました。

やりたいことは、

722:デフォルトの名無しさん
07/08/21 09:59:05
>>719
そうなのです、それをやってみた結果、それがわかったのでした。

MouseUpというのはMouseDownが起きて初めて起こるはずなので、Upだけ
2回連続するというのは、理屈でいけばおかしいと思われました。

しかし、確かにDownを挟まずに、2回通っているのでした。

これは、どこかでDownに準じる何かが起きているが、それがおもてに
現れずにいるというようなことなのか、それとも、どこかまだ不明なところを
経由して再びMouseUpが実現してしまうという構造なのか・・・??

それで、そういったことは起こりうるのか、それが疑問になったのでした。

で、現実にItemが選択状態のBackColorにならない、ということは、その
2回連続しているMouseUpがおきてしまうことと関係があるのだろう、
と推測されたわけでしたが、どなたかアドバイスがありましたらお願いしますです。

723:デフォルトの名無しさん
07/08/21 10:14:55
>>720
DirextXを使用している「もの」って具体的に何
>>722
再現しなかったのでした。
そのListViewItemについて詳しく教えてほしいと思ったのでした。

724:デフォルトの名無しさん
07/08/21 10:19:28
>>723
スルーされるの覚悟ですが、フルスクリーンで動作するゲームです。
DirectXについて詳しくないのですが、普通にSpy++でハンドル調べて
Findwindow等で取得したハンドルを使ってGetPixelしたのですが
駄目でした。

725:デフォルトの名無しさん
07/08/21 10:29:50
普通にGraphics.CopyFromScreenでできない?

726:デフォルトの名無しさん
07/08/21 10:35:20
有り難う御座います。帰ってから試してみます。

727:デフォルトの名無しさん
07/08/21 11:31:28
行列クラスを作ろうとしています。今、
Dim ary(,) As Integer = {{1, 0}, {0, 1}}
Dim matrix As New Matrix(ary)
のようにやっていますが、
Dim matrix As New Matrix({{1, 0}, {0, 1}})
とやることはできないでしょうか。

また、a22 = matrix(2, 2) で a22に1が入るなどとやりたいのですが、
そういうことは可能でしょうか。

Array は Inherits できないようなので、無理なんですかね?


728:デフォルトの名無しさん
07/08/21 11:34:12
>>724
FPSゲームのチートソフトでも作る気かw

729:デフォルトの名無しさん
07/08/21 11:38:29
>>727
>Dim matrix As New Matrix({{1, 0}, {0, 1}})
コンストラクタの引数に配列をとる
>a22 = matrix(2, 2)
既定のプロパティ

730:729
07/08/21 12:00:46
すまん上の方はもうやってたな
Dim matrix As Matrix = New Matrix(New Integer(,) {{1, 0}, {0, 1}})
にするだけ

731:724
07/08/21 13:23:15
>>728
チートだなんてとんでも無い。ちょっとしたマクロ程度です。
>>725も試してみたんですが、上手く使えずWin32APIで
GetWindowDC(0)としてデスクトップ全体のDCからGetPixelしたん
ですが、DirectX(フルスクリーン)だと上手く行かないみたいですね。
今会社なので試せてませんが…。

ググってみると、どうも出来ないという話ばかりありました。

もう何て言うか、他のソフトで窓化してから組んだ方が手っ取り早い
気がしてきました。UWSCのPeekColorなんかだと出来るんですが
どうやって実現しているんだろう…。


732:デフォルトの名無しさん
07/08/21 14:23:02
DirectXとフルスクリーンには、何にも因果関係はないと思うが。

DirectXで描画しているDCを取得しないと駄目なんでないの?

733:デフォルトの名無しさん
07/08/21 14:39:07
WebBrowserコントロール内のドキュメントの反転範囲の取得は可能ですか?

734:733
07/08/21 14:40:27
連レスすいません、「クリップボードの利用は無し」が条件です。

735:デフォルトの名無しさん
07/08/21 14:43:37
>>733
可能です

736:733
07/08/21 14:45:27
>>735
ありがとうございます

737:デフォルトの名無しさん
07/08/21 14:54:33
VB2003で開発しています。

ここで質問していいかわからないので、もし他スレが適切なら
誘導をお願いします。


OSがWin2003Serverでドメインコントローラになっているサーバに
Everyoneでフルコントロールできる共有フォルダがあります。
この共有フォルダに、LANで繋がっているOSがXpHomeEditionのPC
からファイルをアップロードしたりダウンロードしたりするアプリを
作りたいのです。

使用するPCはちょっと特殊なPCでHomeEditionしかプリインストールされていません。
ドライバ類の事を考慮して、OSをProfessionalEditionに乗せかえることは
しません。

クライアントがProfessionalEditionなら問題はないのですが、HomeEdition
なのでサーバの共有フォルダにアクセスしようとすると、ユーザ名と
パスワードを要求されてしまいます。

最初にエクスプローラから共有フォルダを開こうとしてユーザ名とパスワードを
通しておけば次からは要求されないので問題がないのですが、この開発中の
アプリからいきなり共有フォルダにアクセスしようとすると、ユーザ名と
パスワードが通っていないためにエラーになります。

プログラムからユーザ名とパスワードを認証させる方法はありますでしょうか?

738:724
07/08/21 14:55:53
>>732
そうなんですか。すいません。あまり詳しくなくて。。
URLリンク(oshiete1.goo.ne.jp)
この辺みて勘違いしてたかもしれません。

取りあえず、↓みたいな感じの関数で帰ってから試してみます。
有り難う御座いました。

Private Function PeekColor(ByVal x As Integer, ByVal y As Integer) As Integer

Dim ret As Integer

ret = GetWindowDC(0) 'スクリーン全体のデバイスコンテキストを取得
PeekColor = GetPixel(ret, x, y)
ret = ReleaseDC(0, ret) 'スクリーン全体のデバイスコンテキストを解放

End Function

739:デフォルトの名無しさん
07/08/21 15:00:47
>>737
WNetUseConnection


740:デフォルトの名無しさん
07/08/21 15:03:46
>>738
どんなフルスクリーンか知らんが解像度が変更されている場合もあるので気をつけれ
多分デスクトップのDCのピクセル情報はフルスクリーンキャプチャに移るのと一緒だと思うから一回撮ってペイントに貼り付けてみて確認してみるのもいいかも

741:デフォルトの名無しさん
07/08/21 15:16:15
>>737

>ドライバ類の事を考慮して、OSをProfessionalEditionに乗せかえることは
>しません。

これだけの為にProにアップグレードするべきだとは思わんが、一応教えておく。
ドライバはHomeだろうがProだろうが一緒。互換性を心配するのは間違い。

742:デフォルトの名無しさん
07/08/21 17:20:47
VB2005です。
TextBoxで未入力のときに数値の0とみなしたいのですが、次のようなやり方以外に
簡単な方法はありますか?
if textbox1.text.length = 0 then
val = 0
elseif isnumeric(textbox1.text) then
val = cint(textbox1.text)
else
'error
end if

743:737
07/08/21 17:47:49
>>738
さっそくWNetUseConnectionをぐぐってみました。
で参考になるサンプルを見つけたので
URLリンク(64.233.167.104)
真似てやってみたのですが
その関数の戻り値が 487 となり、失敗します。

で、その戻り値を調べたら
ERROR_INVALID_ADDRESS 487 0x000001E7 無効なアドレスにアクセスしようとしています。
とありました。
しかし、そのアドレスは確実に間違っていないはずなんですが・・・。
そのアドレスをエクスプローラのアドレス欄に貼り付けるとちゃんと表示されます。

これ以上はスレ違いでしょうかね?
apiスレに移動したほうがいいでしょうか?


>>741
ドライバの互換性云々というのではなく、ドライバ類がOSの再セットアップ用に
提供されていないという問題なんです。
一応、ハードディスクにはリカバリイメージが格納されているのですが
隠蔽されているっぽいのです。
ドライバCDもなく、webでも公開もされておらず・・・

744:デフォルトの名無しさん
07/08/21 18:14:50
>>743
ヒント:上書きインストール

745:デフォルトの名無しさん
07/08/21 18:33:56
>>742
それで十分簡単だと思われ。

746:727
07/08/21 18:57:05
>>729
a22 = matrix(2, 2) はできました。ありがとうございます。
Dim matrix As New Matrix({{1, 0}, {0, 1}})
の方は、以下のようにしてみましたが、式が必要です
というエラーが出ます。対策を教えていただけないでしょうか。


Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim matrix As new Array2({1, 0})
End Sub
End Class
Public Class Array2
Public elements As Array
Public Sub New(ByVal ary As Array)
elements = ary
End Sub
End Class

747:デフォルトの名無しさん
07/08/21 20:15:26
>>743
Win32APIの意味や失敗の原因を調べるならWin32API質問箱スレに移動すべきだが、
Win32APIを呼び出すためのVB.NETの記述方法について知りたいなら、ここのままでも
よいのでは?

748:737
07/08/21 21:10:20
Win32API質問箱スレにいってきます。
ありがとうございました。

749:デフォルトの名無しさん
07/08/21 21:24:00
>>746
>>730

750:746
07/08/22 09:59:10
>>749
見逃してました。。。
うまく行きました。ありがとうございました。
型に配列就職誌をつけられるとは知りませんでした。

751:デフォルトの名無しさん
07/08/22 10:15:43
配列型という型なんだよ
変数名じゃなくて型名の後に括弧を付ける方がその意味では正しい

752:デフォルトの名無しさん
07/08/22 11:06:56
746はVBしかしたことないんかな

753:デフォルトの名無しさん
07/08/22 12:16:12
>配列就職誌
誤変換に生活史が見て取れる

754:デフォルトの名無しさん
07/08/22 12:44:18
Dim array As Int32() = New Int32() {1, 2, 3}
こう書いたらもうC#だなw

755:デフォルトの名無しさん
07/08/22 21:19:29
友達からVS2005をコピーしてもらったのですが、インストール方法がわかりません。
どうやらキーを入れるみたいなんですが、キーを教えてもらえませんか?

756:デフォルトの名無しさん
07/08/22 21:46:24
>>755
お前頭悪過ぎ

わざとボケたならすまない。
だが、ここでなく低脳スレに行くことをオススメする。

757:デフォルトの名無しさん
07/08/22 21:53:17
>>755
マイクロソフトに問い合わせればいいじゃん

758:デフォルトの名無しさん
07/08/23 11:13:09
VB2005を使っています。

フォームのNew()の中でInitializeComponent()が呼ばれますが、InitializeComponent()内で
設計時に設定したプロパティを設定するときに、それぞれのイベントハンドラが呼ばれたりします。

全てが初期化されるまでに呼ばれると困るイベントハンドラもあるので、今のところは
以下のようなコードでしのいでますが、VB2005に用意されている機能でこれを実現することはできますか?
Class Form1
  Dim mConstructed as Boolean

  Public Sub New()
    InitializeComponent()
    mConstructed = True
  End Sub

  Private Sub SomeEventHandler(...)
    If Not mConstructed Then
      Exit Sub
    End If
  End Sub
End Class

759:デフォルトの名無しさん
07/08/23 12:39:16
>>758
まあ別にそれでも良いんじゃない?
(ただ、未確認だけど自分で判定用のフィールド作らなくてもForm.Createdが使えると思う)

そういう場合はHandles句を使わずに自分でイベントを紐付けするのが正攻法だと思うけど。

760:758
07/08/23 13:04:41
>>759
前者の方法も知りませんでしたし、後者の方法も目から鱗でした!
ありがとうございました。

761:デフォルトの名無しさん
07/08/23 15:11:07
タブコントロールを使っているのですが
タブが多くなり2段になりました。
どうせなら自分の好きなタブで区切り2段になるようにしたいのですが
タブ何個で段分割するとかいう指定はないでしょうか?


762:デフォルトの名無しさん
07/08/23 15:13:15
タブサイズ調整するしかないんじゃね?

763:デフォルトの名無しさん
07/08/23 15:54:00
あきらめました!

764:デフォルトの名無しさん
07/08/23 20:58:38
諦めんのはええぇぇぇぇwwwwww

765:733
07/08/23 22:05:44
あれから探して見つかったので、聞かれていませんが一応。
WebBrowser.Document.ActiveElement.InnerText
WebBrowser.Document.ActiveElement.InnerHtml
を使ってWebBrowserの選択範囲・クリックした画像のソース等の取得ができました。クリックイベントと併用したら便利でした。


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

4736日前に更新/252 KB
担当:undef