VB.NET質問スレ (Part21 ..
[2ch|▼Menu]
751:デフォルトの名無しさん
07/06/17 02:45:45
>>742
あと「何度」って
どれとどれとどれとどれどれと、どれだよ?

752:デフォルトの名無しさん
07/06/17 03:35:48
>>742
そう思えばスルーすればいいじゃないか?
別にここはそういう人間が来ていけない理由もないし
怠惰であろうがなかろうが答えてもいいと思える人間が答えられるならそれでいいじゃないか

753:デフォルトの名無しさん
07/06/17 05:56:12
throw new exception("他でやれ")

754:デフォルトの名無しさん
07/06/17 22:58:03
VB2005からVCで作られたDLLをコールするときにエラーが出て困ってます。
関数のパラメータに構造体を指定して、構造体のメンバの文字列を渡したいけれど、
なんかうまく行かないんですよね。VB2005だと固定長文字列ってのがサポートされて
いないとか何とか言うのは分かったけれど、解決方法が不明となっています。アドバイスをお願いします。

コードはこんな感じ。
*VC2005*****************************************************************
typedef struct{
 int iTemp;
 char cTemp[256];
}tag_strTemp;

void __declspec(dllexport) WINAPI TestFunction(tag_strTemp* pstrTemp)
{
 MessageBox(NULL, pstrTemp->cTemp, "", 0);
}

*VB2005*****************************************************************
Moduel Module1
 Public Structure tag_strTemp
  Public iTemp as Integer
  Public cTemp as String ←ここの定義に問題があるんだと思ってます。
 End Structure
End Module

Public Class Form1
 Private Sub Form1_Load(・・・)
  Dim strTemp as tag_strTemp
  strTemp.cTemp = "ABCDE"
  TestFunction(strTemp)
End Sub
End Class

755:デフォルトの名無しさん
07/06/17 23:03:16
MSDN の相互運用マーシャリング以下の項目見れ
サンプル付きで解説されてる

756:デフォルトの名無しさん
07/06/17 23:34:39
つうか
chrにString渡してどうする・・・・
Chrで渡せばいいのに・・・・

757:デフォルトの名無しさん
07/06/18 00:12:40
>>756
君も恥かかないうちにその辺で止めといたほうがいいよw

758:デフォルトの名無しさん
07/06/18 00:23:27
>>757
まぁ・・・書き方はともかく理由は分かってそうなイメージだけどな

759:デフォルトの名無しさん
07/06/18 00:41:08
756が分かってるわけないでしょw

値型と参照型の区別もついてないか、あるいはCで>>754みたいな構造体を
作ったときのメモリイメージが理解できてないか、少なくとも何れかではある。

760:デフォルトの名無しさん
07/06/18 09:14:20
>>759
まさか・・・Stringを値型と勘違いしている・・・わけねぇべ
そんなPGいねぇだろ




761:デフォルトの名無しさん
07/06/18 10:07:38
>>754
<StructLayout(LayoutKind.Sequential)> _
Public Structure tag_strTemp
  Public iTemp as Integer 
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst := 256)> _
  Public cTemp as String
End Structure

詳細は>>755 の通りでMSDN参照のこと。
複雑になるようならC++/CLIでアセンブリラッパを作ってもよい。

762:デフォルトの名無しさん
07/06/18 12:24:29
アラインメント(パッキング)も指定した方がいいんじゃない?
まあMSDNライブラリにデフォのパッキングサイズは8Byteって書いてあるのは
間違いっぽいから要らないのかもしれないけど。

あとOut属性も。

763:デフォルトの名無しさん
07/06/18 13:32:31
SQL鯖のDBのカラムで AAA というカラムがあり VarChar(100)でNotNull+デフォルト空文字だとして
データ取得する時に

1: dim temp as string
2: temp = directcast(dt.rows(0).item("AAA"),string)

として取得している部分があったとき
2の部分でこうやってやるのってムダダしやる必要ってあると思う?
俺は定義で必ずNullはないとしているんだからナンセンスだと思うんだが みんなはどうやってるんだろ?

if dt.rows(0).item("AAA") isnot dbnull.value then
 temp = directcast(dt.rows(0).item("AAA"),string)
else
'あれば何か書く
end if


764:デフォルトの名無しさん
07/06/18 17:59:04
SQL文中で
ISNULL(対象カラム,'')
ってしておけばいいんでない。

765:デフォルトの名無しさん
07/06/18 19:42:13
やる必要なし
NotNull制約を外した場合を考慮するってことなんだろうけど
そんなこと考え出したら、システムがややこしくなっちまう
心配ならデータ設計見直すべき

766:デフォルトの名無しさん
07/06/18 21:37:34
>>762
適当なこと言うな。
.NET のマーシャリングのデフォルトパッキングは8で間違いないし
この場面ではパッキングサイズは問題にならない。
文字列を DLL に渡したいのに Out 属性つけてどうする。

767:デフォルトの名無しさん
07/06/18 21:47:07
>NET のマーシャリングのデフォルトパッキングは8で間違いないし
いやだからMSDNライブラリにはそう書いてあるけど、実際いろいろ試してみると
どうも4になってるみたいだよ。VB固有かも知れないが。

あと、アラインメントが問題にならない訳がないw
最後の行に関しては確かに>>754はそう言ってるね見落とした。

768:デフォルトの名無しさん
07/06/18 21:53:44
>>767
間違いなくパッキングサイズの意味を勘違いしてる。

<StructLayout(LayoutKind.Sequential, Pack:=4)> _
Structure Pack4
    Public Data1 As Byte
    Public Data2 As Long
End Structure

<StructLayout(LayoutKind.Sequential, Pack:=8)> _
Structure Pack8
    Public Data1 As Byte
    Public Data2 As Long
End Structure

<StructLayout(LayoutKind.Sequential)> _
Structure PackDefault
    Public Data1 As Byte
    Public Data2 As Long
End Structure

Debug.WriteLine(Marshal.SizeOf(GetType(Pack4)))
Debug.WriteLine(Marshal.SizeOf(GetType(Pack8)))
Debug.WriteLine(Marshal.SizeOf(GetType(PackDefault)))

> あと、アラインメントが問題にならない訳がないw
「この場面では」と断ってるだろ。

769:デフォルトの名無しさん
07/06/18 21:55:12
だから「この場面で」問題になるってw
頭おかしいんじゃないの?

770:デフォルトの名無しさん
07/06/18 22:02:24
>>768 でデフォルトが 8 ってのは証明できてるとして。

<StructLayout(LayoutKind.Sequential, Pack:=4)> _
Structure Pack4
    Public Data1 As Integer
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=5)> _
    Public Data2 As String
End Structure

<StructLayout(LayoutKind.Sequential, Pack:=8)> _
Structure Pack8
    Public Data1 As Integer
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=5)> _
    Public Data2 As String
End Structure

Debug.WriteLine(Marshal.SizeOf(GetType(Pack4)))
Debug.WriteLine(Marshal.SizeOf(GetType(Pack8)))

何がどう問題になるのか教えてもらおうか?

771:デフォルトの名無しさん
07/06/18 22:10:02
?

772:754
07/06/18 22:18:26
>>755,761
ありがとう!
解決しますた!
>>762さんが言ってたことについては、
アラインメントについても詳しくは理解できていないので、
メンバを8byte区切りにしたり、ダミー変数使ったりして対応します。

773:デフォルトの名無しさん
07/06/20 11:56:14
検索システムで,検索結果をDataGridに表示しています.(ReadOnly)
ちがう条件を入力したら,現在表示されている行に追加されていきます.
どうしたら,DataGridに表示されている内容をリセットできますか?
DisposeだとDataGridごと消えるし,空データをバインドしても消えないし…
どなたか教えて下さい.

774:デフォルトの名無しさん
07/06/20 12:02:59
Panel コントロールで、ScrollBar の Scrollイベントに合わせて
リアルタイムで追随する移動を行うべくあちこち探してるのですが、
こういうときは、Client領域を移動できるメソッドかプロパティとして
何を使用すればいいでしょうか。

775:デフォルトの名無しさん
07/06/20 12:12:07
Location

776:デフォルトの名無しさん
07/06/20 12:40:29
>>773
ちょっとソース書いてみ

777:デフォルトの名無しさん
07/06/20 12:45:56

一つのプロジェクト内にユーザコントロールを作成して利用していますが、
コントロールを配置したフォームのデザインが修正されると?エラーになり、
デザイン画面が表示されなくなります。

エラーメッセージ
型 'hogehoge.TukuttaControl' が定義されていません。


例:
プロジェクト名:hogehoge
ユーザコントロールクラス名:TukuttaControl
コントロールを配置したフォーム:Form1

とある時に、Form1.Desugner.vbの内容が以下のように勝手に
修正されてしまい、上記のエラーになってしまいます。

○ Me.TukuCon = New TukuttaControl

× Me.TukuCon = New hogehoge.TukuttaControl

どうにか対策は無いでしょうか?

778:777
07/06/20 12:47:40
追記です。

× Me.TukuCon = New hogehoge.TukuttaControl
上記のhogehoge.を消せば、デザイン画面も正常に表示されます。

またTukuttaControlはDllにはなっていません。

よろしくお願いします。

779:デフォルトの名無しさん
07/06/20 12:58:12
>>775
あーっそうでしたか、助かりました!!
回答ありがとうございました!!

780:デフォルトの名無しさん
07/06/20 13:30:11
>>779
と思ったら、これってのはもしかして、Client領域のView範囲を動かす
のではなくて、中のコントロールだとかを自前で動かすということでしたか・・・?

PanelのClient領域のView位置をプログラムで移動するには何を使えば
いいでしょう?

781:デフォルトの名無しさん
07/06/20 14:04:23
>>780
何いってんのかさっぱりわからんが、
Panel内をスクロールさせたいの?
もしかしてPanelにScrollコントロールをわざわざつけてたりする?
AutoScroll = trueにすれば自動で表示されるけど。

あとは
ScrollControlIntoViewとか
VerticalScroll/HorizontalScrollとか

782:デフォルトの名無しさん
07/06/20 14:58:45
>>781
どうもです!!

実はそのAutoScrollですが、確かにScrollBarが出てきてすくロース機能は
あるにはあるのですが、、

そのスクロースバーを掴んでマウスボタンを離すと、Panel内のViewが移るのが
わかります。

しかし、リアルタイムの動作にならず、これを、マウスボタンを掴んだままで
View位置を動かしたいのでした。

マウスのホイールをまわすと確かにリアルで動きますが、スクロールのスピード
が限定されるので、できればバーの動きと同期した移動を行ないたいのです。

SetDisplayRectLocation なども見ていますが、これだとWinProcとか使わないと
いけなさそうでした。できれば手軽に既存のメソッドかプロパティがあればと・・・。

783:デフォルトの名無しさん
07/06/20 23:37:19
ID3v1のタグを読み取りたいのですが
発売の年だけがうまく読み取れません
誰かご教授願えませんでしょうか?
あとエクスプローラーからのドラッグ&ドロップも宜しければお願いします。

784:デフォルトの名無しさん
07/06/20 23:46:29
それだけ言われてもそうか大変だなとしか言いようがねぇ
D&D なんて検索すりゃいくらでも出てくるだろ

785:デフォルトの名無しさん
07/06/21 00:10:21
昔VB6で作ったプログラムを、プロジェクト変換機能を使ってVisualStudio2005に
読み込ませてコンパイルしてみたら、.Netframework必須のアプリが
できあがってしまいました。
VB6で作ったプログラムをVisualStudio2005でコンパイルして
.Netframework不要のアプリを生成することはできないでしょうか。
.Netの機能を使いたいわけではなく、コンパイルしたいだけなのですが
なんとかならないでしょうか。

786:デフォルトの名無しさん
07/06/21 00:14:27
なりません。
はい次。

787:デフォルトの名無しさん
07/06/21 00:22:00
>>785
いかんともしがたい

788:デフォルトの名無しさん
07/06/21 00:51:06
>>782
オレの環境では、Panelにボタンを置いてスクロールさせるとリアルで追従するけど?

789:デフォルトの名無しさん
07/06/21 01:01:09
Diposeパターンについて教えてください。

PenやBrushのようなアンマネージリソースをラップしたオブジェクトを保持するクラスの場合
AとBのどちらで開放するのが正解?


Public Overrides Sub Dispose( ByVal disposing As Boolean)
If disposed Then
If (disposing) Then
' マネージリソースの開放 (A)
End If
' アンマネージリソースの開放 (B)
disposed = True
End If

End Sub

790:デフォルトの名無しさん
07/06/21 01:02:32
いきなり打ち間違えてるし。。。
Disposeパターンです。

791:デフォルトの名無しさん
07/06/21 01:03:15
disposingに関わらず解放


792:デフォルトの名無しさん
07/06/21 01:04:48
IntPtr 以外は全部マネージドと考えてもいいよ。

つかその辺は保持するな、必要な時に作ってすぐ捨てろ。

793:デフォルトの名無しさん
07/06/21 01:06:42
いや、コストを考えるとキャッシュしておきたい場合もあるだろハゲ

794:デフォルトの名無しさん
07/06/21 01:06:51
ん?
791と792と回答が違うけど、どっちが正解?


795:デフォルトの名無しさん
07/06/21 01:09:39
792。
自分が持っている参照型のフィールドはファイナライザのタイミングでは手を出しちゃダメ。

796:デフォルトの名無しさん
07/06/21 01:10:14
ファイナライザ?

797:デフォルトの名無しさん
07/06/21 01:10:56
サンキュー
イマイチ、この辺の具体例を書いてあるサンプルが見つからなくて困ってた。
勉強になったよ。

798:デフォルトの名無しさん
07/06/21 01:24:05
また羊がひとつ屠られた

799:デフォルトの名無しさん
07/06/21 01:50:49
VB2005(Express)でお聞きしたいのですが

Public Sub WriteXml(ByVal fileName As String)

Dim instance As New DataSet1.NewItemDataTable

instance.WriteXml(fileName)
End Sub

上記コードでデバッグ中にDataTableVisualizerで確認してもデータテーブルにデータが
ない状態で、出力されたXMLにも書き出されていませんでした。
データセットに存在しているのはこのテーブルだけです。
DataTableをバインドしているDataGridViewには入力中データが反映されています。
DataTableをXMLに出力するにはどうすればよいのでしょう。

わかりにくいかも知れませんが、よろしくお願いします。



800:デフォルトの名無しさん
07/06/21 05:35:37
new って英単語の意味は知ってる?

801:デフォルトの名無しさん
07/06/21 09:24:27
>>799

DataGridView.DataSource
つかえこのカス野郎!


802:デフォルトの名無しさん
07/06/21 09:48:20
VB2005について質問です
SPREADで列数18、幅25の表を作ったら動作が重かったんですが、軽くする方法ありませんか?

803:デフォルトの名無しさん
07/06/21 09:55:58
>>802
グレープシティーに聞けばいいと思うよ

804:デフォルトの名無しさん
07/06/21 10:08:52
>>802
しかもおまえマルチかよ・・・・
ほんと頭悪いから出て行けよw
なにをどうとかなら判るが これだけの情報でどうやって動作軽くしろとかいうんだ
アフォらしいの通り越して、お前みたいな奴がソフト作るのホントやめてほしい

//--------------------------------------------------------
Visual Basic2005やりたいんだけどアドバイス頼む
スレリンク(tech板:67番)

67 名前:デフォルトの名無しさん[] 投稿日:2007/06/21(木) 09:25:40
初心者な質問スマソ
SPREADで行列100 X 18、列幅25の表つくったんだけど、
処理(スクロールや行選択)が重いんだけど軽く出来ませんかね?



805:デフォルトの名無しさん
07/06/21 12:01:29
メールアドレスを正規表現で抽出する場合どのように記述すればいいのでしょうか?

806:デフォルトの名無しさん
07/06/21 12:05:32
>>805
スレ (´∀`( ´∀`) チガイ


807:デフォルトの名無しさん
07/06/21 12:27:59
>>805
ググれよ

808:デフォルトの名無しさん
07/06/21 12:40:18
散々ググったんですがどうもいまいちわからないんですよ。
冷たいこと言わないで教えてくださいよ。

809:デフォルトの名無しさん
07/06/21 12:44:16
メールアドレスに一致する正規表現は「ありません」

とぐぐった一発目にあるが?

810:デフォルトの名無しさん
07/06/21 12:51:04
あ(笑)。もしかしてほんとは皆さん知らないんじゃ無いんですか?

811:デフォルトの名無しさん
07/06/21 13:09:25
>>788
どうもです!!
自分はWindows2000+VS2005Proの環境を使ってまして
そこではスクロールバーの動きに追従しませんでした。
環境差による可能性がありそうなので、これから別PCの
WinXp環境に移して試してみます。助かります!!

812:799
07/06/21 13:59:53
>>800
と言うことは、Newでクラス参照すると全く新規で作られるということでしょうか?
既存のDataTableを参照するにはどうすればよいのでしょう?

>>801
調べてみましたが、使い方がわかりませんでした。すみません。

813:デフォルトの名無しさん
07/06/21 14:08:28
だから

調べてみましたが、使い方がわかりませんでした
じゃわかんねぇYO!
どこがどうわからんのか言えよ
使う気ないのかしらんが

あと既存のDataTableを参照するには
と書いてあるということはDataTableをDataGridViewにバインドさせて使ってるんだよな?
つまりDataGridViewはその元のDataTableをDataSourceとして持ってるわけだ

814:デフォルトの名無しさん
07/06/21 14:12:26
>>813
こんな努力もしないアホに教えようとするだけムダだ
質問すらもまともにしようとしていないしな

ほれこれでいいだろ もう来るなよ

Public Sub WriteXml(ByVal fileName As String)
Dim instance As DataSet1.NewItemDataTable
instance = DirectCast(DataGridView1.DataSource , DataSet1.NewItemDataTable )
instance.WriteXml(fileName)
End Sub


815:デフォルトの名無しさん
07/06/21 15:34:06
>>808
うぜえな
URLリンク(www.google.com)
3つめにあるじゃねえか。

816:デフォルトの名無しさん
07/06/21 15:36:45
>>815
みんなスルーしてたのにお前の優しさに>>808が泣いた

817:デフォルトの名無しさん
07/06/21 18:56:25
知ってたら教えてー。
VS2005(VB.NETもC#)のIDEで、タブ付きドキュメントにしてソースを
開いていくと、タブが左側に追加されていくのを、右側に追加して
いくように変更できないのかな?

818:デフォルトの名無しさん
07/06/21 19:02:29
>>788
WinXp環境に移して試してみましたところ、この環境ではScrollBarの
動きに追随してリアルタイムでViewが動くのを確認しました。
これは環境的な理由があるようにも思いましたので、
ひとまず現状のままにしておきます。
情報ありがとうございました!!!

819:デフォルトの名無しさん
07/06/21 20:19:49
URLリンク(hp.vector.co.jp) を組み込みました。
実行ファイルをダブルクリックで実行、ショートカットからの実行では問題ないのですが、
ファイルにこのアプリケーションを関連付けしてファイルから実行すると、
エラーで落ちてしまいます(エラーの詳細はわからず)。

おそらくDLLの場所がわからず、読み込めないため落ちてると思うのですが、
レジストリの関連付けで、作業フォルダの指定もできないみたいです。

どうすればいいのでしょうか。。

820:デフォルトの名無しさん
07/06/21 21:05:30
VBにはJavaのThrowsのような
関数に例外をスルーさせる方法はありますか?

821:デフォルトの名無しさん
07/06/21 21:06:51
あります。

822:デフォルトの名無しさん
07/06/21 21:09:55
ググッてみてもJavaとは例外処理の概念が違うから
ウンヌンカンヌンで例外のエスカレーションは
できないのです。みたいな事書かれていたので
できたら、やり方教えてもらえないでしょうか
キーワードだけでも結構です。

823:819
07/06/21 22:19:21
やり方がわからなかったので、自前でマウスジェスチャくみますた。。

824:デフォルトの名無しさん
07/06/21 22:24:21
例外はほっときゃ勝手に呼び出し元に伝播する

825:デフォルトの名無しさん
07/06/22 00:03:32
互換機能のOn Error Goto は使わないようにね

826:819
07/06/22 01:22:39
1 sub main()
2 F(1,1)
3 F(1,0)
4 end sub

5 function F(a as integer, b as integer) as double
6 return a/b
7 end function

たとえば上のような疑似VBコードにおいて
実行すると 6行目で例外発生して止まる。
で5行目を
function F(a as integer, b as integer) as double Throws Exception
のように書き換え実行すると
2行目で例外が発生しましたとなって止まる。
ようにしたい。要するにデバッグしやすいように例外を使用したい

827:デフォルトの名無しさん
07/06/22 01:51:25
>>826
なんだ例外のエスカレーションとかいうレベルの話じゃなかった

828:デフォルトの名無しさん
07/06/22 02:11:58
>>819
たぶんdllとはなんの関係もないウンコなミスとエスパーするがどうか。


829:デフォルトの名無しさん
07/06/22 02:29:14
>>826
茶化したままだとあれだから、VS2005でマイコードのみの設定が有効になってるのを確かめて、
DebuggerNonUserCode属性を付ければ目標は達成できる。

<DebuggerNonUserCode()> _
function F(a as integer, b as integer) as double
  return a/b 
end function 


830:デフォルトの名無しさん
07/06/24 06:16:44

誰か似たようなことを経験していたら教えてほしいのですが、、

あるコントロール上をマウスが通ると、MouseMoveイベントが普通立つと思う。

しかし、何かある操作をしてから、同様にしても、今度は全然 MouseMove
     ~~~~~~~~~~~~
イベント自体が立ってくれなくなる。それで仕方なく、別のアプリケーションの

ウインドウをクリックしてFocusを移してから、再度元のアプリケーションに

戻って同様にしてみると、今度は MouseMoveイベントが立ってくれる、

とちょっと変な現象なんですが、こういうことってあり得るでしょうか?


831:デフォルトの名無しさん
07/06/24 06:37:21
>>830

この場合、「何かある操作」 というのは、そのコントロールの置いてある Panel 

の右クリックで ContextMenuStrip を表示して、その際、そのメニューのどれも

クリックせずに、また Panel 上のどこかをクリックして ContextMenuStrip を

Close する、というだけの操作なんですが、これをすると、それまで立ってくれてた

その Panel 上のコントロールで MouseMove イベントが立たなくなるのでした。

832:デフォルトの名無しさん
07/06/24 07:03:19
一切自分では調べてないだろ
URLリンク(www.google.com)

833:デフォルトの名無しさん
07/06/24 11:59:27
>>831
メニューのClosedイベントで
System.Windows.Forms.ToolStripManager+ModalMenuFilter.ExitMenuMode()
を呼ぶと直る。
リフレクション使わないといけないけど。

834:デフォルトの名無しさん
07/06/24 13:42:03
>>832
ありがとうございます。
これ一応 BUG だったんですね・・・う〜ん。

>>833
どうもです、助かります。

>System.Windows.Forms.ToolStripManager+ModalMenuFilter.ExitMenuMode()

この方法、調べて使ってみます。

>リフレクション使わないといけないけど

これについても具体的にはどうすればいいかまだわかりませんが、また調べてみます。
それでもわからない場合また質問するかと思いますが、
またよろしくお願いします。


835:デフォルトの名無しさん
07/06/24 15:54:43
>>833

すみません、この ModalMenuFilter というのは、ヘルプで検索しても
検索結果 0 で情報が出てきませんでした。

ググってみましたが、ただ一件
URLリンク(www.google.com)

があるだけでしたが、これって何かのクラスなのでしょうか。このページ開いても
該当箇所は見られませんでした・・・う〜ん困りました。。。

よろしければご指導の続きを戴ければありがたいです。すみません・・・。


836:デフォルトの名無しさん
07/06/24 18:34:16
>>834
internalなクラスだから説明はどこにもないと思う。
手元にあるのはC#のコードだけど適宜よみかえてちょ。

void contextMenuStrip1_Closed( object sender, ToolStripDropDownClosedEventArgs e )
{
    Type t = Type.GetType( "System.Windows.Forms.ToolStripManager+ModalMenuFilter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" );
    MethodInfo mi = t.GetMethod( "ExitMenuMode", BindingFlags.NonPublic | BindingFlags.Static );
    mi.Invoke( null, null );
}

837:デフォルトの名無しさん
07/06/24 18:56:16
ContextMenuStrip の中のどれかをクリックして実行すると(それが空の関数であっても)
問題は起こらないため、一つ考えられるのは、 ContextMenuStrip の Closing
イベントでそれを強引に実行してやればどうだろう、とも思ったのですが、この
強引にコードから ContextMenuStrip の中のどれかに Click イベントを起こすためには
どうすればいいでしょう、これについて知りたいです。
よろしくお願いします。



838:デフォルトの名無しさん
07/06/24 18:58:05
>>836
おお、どうもです!!かぶってすみませんでした。
こういう方法あるんですね、ありがとうございます。
助かります。やってみます!!

839:838
07/06/24 20:53:38
>>836
素晴らしいです、みごとに一発で解決しました。

一時は本当にどうしたものかと悩みました、でもこれで助かりました。

>internalなクラスだから説明はどこにもない

やっぱり一般人には知りえない内容なのでしょうか、
もしかしてMSの人じゃないとわからない、とかでしょうか・・・

でも本当に助かりました、ありがとうございました!!


840:デフォルトの名無しさん
07/06/24 21:25:37
Reflectorだろ

841:デフォルトの名無しさん
07/06/24 23:42:37
vbというよりもフォームの質問なのかもしれませんが、
初心者スレが見つからないのでここで質問させていただきます。

グループボックスの中にラジオボタンがいくつかと、ラベルをひとつ配置します。
そのラベルの中にラジオボタンをいくつか配置した上で、
ラベルの外(グループボックスの中)のラジオボタンとラベルの中のラジオボタンを
同じグループとして扱いたいのですが、どのように設定したらよいのでしょうか?
お分かりの方がいらっしゃいましたら御教示お願いいたします。

842:デフォルトの名無しさん
07/06/24 23:44:29
そんな変態行為は .NET では認められません

843:デフォルトの名無しさん
07/06/24 23:45:37
おぁー!変体行為だったんですか。
それは困りました。どうしましょう?

844:デフォルトの名無しさん
07/06/24 23:46:36
さぁ。

845:デフォルトの名無しさん
07/06/25 00:17:59
>>841
ラベルはコンテナコントロールじゃないよ。
言ってる意味わかる?

まあ、「初心者スレが見つからないので」とか言ってるが
質問なんかせめて初心者本の数冊も読破してからにしてくれよ。

846:デフォルトの名無しさん
07/06/25 00:18:41
こういうのっておおっぴらに使うか悩んだりしない?
まあ、ネット上で見つけた情報を利用したって立場をとるんだがw


847:826
07/06/25 00:19:44
>829
遅くなって申し訳ない、ありがとうございます。

848:デフォルトの名無しさん
07/06/25 02:40:29
>>846
「こういうの」ってのが何を指してるのかさっぱり。

849:デフォルトの名無しさん
07/06/25 07:24:33
>>839


850:デフォルトの名無しさん
07/06/25 11:33:11
>>841
ユーザコントロール作れ

851:デフォルトの名無しさん
07/06/25 14:55:01
誰か助けてくたざい。
VB2005で、プログラムが完成して、動作を確認できました。
そこまではよかったのですが、実行ファイルを共有フォルダー(サーバーに)
において、実行すると、どうしても実行できません。実行できたとしてもまともに動作しません。
これの解決策だれか知りませんか?


852:デフォルトの名無しさん
07/06/25 14:58:26
ヒント:カレントディレクトリ

853:デフォルトの名無しさん
07/06/25 15:04:38
サーバに実行ファイルがおいてあるんだろ?
普通は実行できないだろ.
MSDNに書いてある.

854:デフォルトの名無しさん
07/06/25 15:06:36
>853
それを実行する方法を知りたいのです。

855:デフォルトの名無しさん
07/06/25 15:26:09
素人にはおすすめしないがポリシーをいじる。
コントロールパネルの管理ツールの
.NET Framework 2.0 Configuration ランタイムセキュリティポリシー
(他をいじってなければ)コンピュータのコードグループのAll_Codeの下に
新規作成の条件の種類を選択するでURL:\\サーバー名\共有名\*
アクセス許可セットFullTrust

インストーラを作るかClickOnceを使うかかサーバーからローカルにコピーさせるかをすすめる。

856:デフォルトの名無しさん
07/06/25 16:12:33
むしろこれはVB.NETの問題ではないな・・・

つうか、あれか・・・クリックワンスのまえのやつやりたいのか?
名前忘れたけど

857:デフォルトの名無しさん
07/06/25 17:23:03
ノータッチ デプロイメント?

858:デフォルトの名無しさん
07/06/25 17:39:38
気持ちは良く分かる。

正直セキュリティが云々言われても無駄に面倒くさい。

ちょちょっとしたものを作って共有しようとしても
インストーラやらClickOnesやら、、、。


ちょっと話がずれるが必要なDLLとかは、実行ファイルへ含めるもしくはフォルダ等へ
指定できたら良いのに。
この時代に容量削減も糞も無いだろう。

実行ファイル1Gとか上等じゃねーか。

859:デフォルトの名無しさん
07/06/25 22:59:56
質問です。
いまFramework1.1で勉強中なのですが
1.1のNotifyIconはバルーン?が表示できなかったので
いろいろ調べて
URLリンク(supware.net)
に辿りつきました。

このクラスを使うとバルーンは表示できるのですが、
ContextMenuがどうしても表示できません。ContextMenuのPopupイベントは反応あるのですが・・・

色々検索してみて大量にヒットするC#のコードを見る限りおかしい所は
自分の力量では発見できないので、ヒントでも構いませんので助言をお願いします。
環境はWindowsXP、Framework1.1、メモ帳です。

以下のコードを同上のクラスの下に書き、コマンドプロンプトでコンパイルしています。
Module Test
Private myForm As Form
Private notifyEx As NotifyIconEx
Private cMenu As ContextMenu
Sub Main()
cMenu = New ContextMenu
cMenu.MenuItems.Add("Item1")
notifyEx = New NotifyIconEx()
notifyEx.Icon = New Icon("C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\ndpsetup.ico")
notifyEx.contextMenu = cMenu
myForm= New Form()
myForm.ContextMenu = cMenu
myForm.ShowDialog()
End Sub
End Module

860:859
07/06/26 20:49:34
なんか俺の質問でスレが過疎ったみたいで・・・・(´・ω・`)

調べたらTrackPopupMenuExがうまく動作してなかったみたいなんで
試行錯誤してNotifyIconExのTrackPopupMenuExを修正して
ContextMenuがでるようになりました

はっきりと原因した原因はいまだ不明ですが
とりあえずしゅっくり勉強したいと思います。

861:デフォルトの名無しさん
07/06/26 21:47:38
>>859
>Framework1.1で

今古いランタイム使う意味は何でしょう?
行きがかり上のしがらみ?それとも以前のもののバージョンアップ
でしょうか?もし新規アプリなら2.0以上でやるべきではないでしょうか?

862:デフォルトの名無しさん
07/06/26 21:59:18
それは大きなお世話だと思うぞ。

863:デフォルトの名無しさん
07/06/27 10:37:28
>>859-860
コマンドプロンプトでコンパイルしている人間がここにはいないんだろう。

864:デフォルトの名無しさん
07/06/27 13:17:50
>>861
おまえ某MVP臭いぞ
仕事してたらわかるだろ? 仕方ないときもあるんだし

865:デフォルトの名無しさん
07/06/27 16:04:39
でも>>859の場合は多分勉強だよ?
VB.NET Expressでいいやん

866:デフォルトの名無しさん
07/06/27 20:17:35

ちょっと安めおまいら。これでも見ろ。知らない人間は えーーーーっと驚くこと請け合いだぜ。

「911」の真実とはダイジェスト版 ? 日本語と英語 ? .movフォーマット ? 31分 - 23MB
URLリンク(www.harmonicslife.net)

「動画をダウンロード」 をクリックすると、動画が始まるまでに20分ぐらい待つと
自動開始する。

30分ぐらい待ってもよければこっちも見る。こっちは詳細バージョンだから、上のを見て
興味もったらぜひ見てみれ。

『911の嘘をくずせ ルース・チェンジ・セカンド・エディション』 日本語版 - ウェッブ・バージョン ? .mov フォーマット ? 83分 - 83MB
URLリンク(www.harmonicslife.net)

要するに俺らはこういう戦争に加担しちまった。おれも当時は小泉に賛成しちまって
ネットで賛成派に回っちまったよ。だが悪いことだった、北朝鮮のミサイルが来るって
ことでアメリカとは同盟するしかないって信じ込んでた。しかしこれを見れば、
ちょっと待て日本はこれでええのか?と疑問になるはず。



867:デフォルトの名無しさん
07/06/27 20:26:46
003はフランソワーズ   まで読んだ

868:859
07/06/27 22:52:37
>>861
確かに勉強中なんですが、職場にはFramework1.1のvbc.exeしか
はいってないので昼休みとかにも弄るために1.1でやってます。
基本はそんな変わらないだろうってことで。
職場はネットにも繋げないんでヘルプもクラスライブラリをHTMLで保存して
CDに焼いて持ち歩いてたりします。
家にはVB2005Expressインストールしてあるんですけどね・・・

>>863
やっぱ危篤な人種なのか・・・
dllとかを毎回入力するのが億劫なんで
簡単なHTA作ってコンパイルしてます。
とか言ってたらこんなん見つけました
URLリンク(www.sliver.com)

ところで、
「FileSystemWatcherで共有フォルダにあるExcelファイルが更新された場合にバルーンでその旨を表示」
というコンセプトで勉強アプリを作り始めたのですが、
Excelは「開く」「閉じる」だけで、更新日時が変更されNotifyFilters.LastWriteを設定しても
正確な情報が取れないことが分かりました・・・
自分で考えつくのは、

変更されたらファイル名と更新日時の値を保持して次に同名ファイルが更新されたら比較する

といったものなのですが、もっと良い案や確実に更新されたのを取得できる方法がありましたら
アドバイスお願いします&このスレの住人さんはレベルが高そうなんで
素人はこっちいけや〜的なスレがありましたら誘導していただけると嬉しいです

ここからずっと俺のターン?(´・ω・`)



869:デフォルトの名無しさん
07/06/28 01:44:00
>このスレの住人さんはレベルが高そうなんで
ナニヲイッテイルンダ


定期的にファイルのハッシュ比較するとか
前回保存日時で比較するとか
すりゃいいんじゃね?

870:デフォルトの名無しさん
07/06/28 09:05:36
みなさんこんにちは。お尋ねします。

通常のLabelですと後ろに引っ込んだ3D形状はあるものの
手前に出っ張った形状は付属されていないのですが、
どこかのサイトで、手前にふくらみのあるラベルコントロールなどが
あるところをご存知ないでしょうか?

それともこういったものは有料のものになるのが普通でしょうか?
昔、LabViewというものを触ったことがあり、それには手前に出っ張って
いるガジェットがたくさんあったのを記憶しています。あれと同じような
感じに見えるものがほしいのですが、

もしご存知の方がおられましたら教えて戴きたく、
なにとぞよろしくお願いします。



871:デフォルトの名無しさん
07/06/28 10:00:47
>>870
LabelのPaintイベントで自分で描画する。
例えば
Label1のPaintイベントに
e.Graphics.DrawRectangle(New Pen(SystemColors.ControlDarkDark), New Rectangle(0, 0, Label1.Width - 1, Label1.Height - 1))
e.Graphics.DrawLine(New Pen(SystemColors.ControlLightLight), 0, 0, Label1.Width - 2, 0)
e.Graphics.DrawLine(New Pen(SystemColors.ControlLightLight), 0, 0, 0, Label1.Height - 2)
微調整はお好みで。

872:デフォルトの名無しさん
07/06/28 10:08:31
>>871
これって、自分で描画できるものなのですか!凄い。
ありがとうございます、やってみます。助かります。

873:デフォルトの名無しさん
07/06/28 15:51:21
>>871
直接描画するんじゃなくてControlPaint.DrawBorder3Dを使うべき

874:デフォルトの名無しさん
07/06/28 16:18:24
数字をアルファベットに変換する場合、みんなはどうしてる?
たとえば、99ならninety nineとか、11ならelevenとかに変換したいんだけど(´Д⊂グスン

875:デフォルトの名無しさん
07/06/28 16:28:51
自前で実装

876:871
07/06/28 16:30:14
>>873
Private Sub Label1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Label1.Paint
ControlPaint.DrawBorder3D(e.Graphics, Label1.ClientRectangle, Border3DStyle.Raised, Border3DSide.All - Border3DSide.Middle)
End Sub
こんな感じでいいかな?

877:デフォルトの名無しさん
07/06/28 16:52:48
>>875
めんどくさい(´Д⊂グスン

878:デフォルトの名無しさん
07/06/28 16:55:33
>>877
このスレで一番言ってはならないことを言ったなw
もう誰も答えてくれんよw

879:874
07/06/28 17:07:53
>>878
んだねw
↓探したらいろいろあった
URLリンク(www.google.co.jp)

880:デフォルトの名無しさん
07/06/28 17:26:07
>>873>>876

こちらもやってみました。

実は、ユーザーコントロールで複合したものでやってみてるのですが、
Label と TextBox の組み合わせで同じ UserControl に乗っけてまして、

その際、ClientRectangle の Inflate とかが必要のようですね。+2ぐらいしないと
外形が遇わないようです。

ところで、この Raised を使った場合、それを通常の BorderStyle プロパティに
追加して選択できるようにもしたいのですが、UserControl なのでPropertyを
Overrideして追加するとしたら、どういった感じにすると出来るでしょう?
ご指導戴ければありがたいです。

881:デフォルトの名無しさん
07/06/28 17:28:11
普通にプロパティつくってその中でいじってやればいいんじゃねぇ?
やり方は好みだとおもうんだが・・・・

オーバーライドする必要がないと思うから

882:デフォルトの名無しさん
07/06/28 17:32:32
>>880
UserControlじゃなくてLabelクラスをオーバーライドするほうがスマート

883:882
07/06/28 17:33:38
すまんオーバーライドじゃなくて継承ね

884:880
07/06/28 19:31:41
>>881
なるほど、UserControl だと、そのものの Property になるということですね。

わかりました、助かりました。

>>882-883
そういう方法もあるということですね。今こちらのはTextBoxと他にもうひとつ
Labelも使ってたので、むずかしそうだったため、UserControl にしてしまってました。
たぶんよく理解していればできるのだと思うのですが、組み合わせコントロールとしては
デザインモードでの視覚的な組み合わせが楽な UserControl にしてました。

その方法での実現についてはまた勉強して考えてみます。

885:デフォルトの名無しさん
07/06/29 11:25:32

user.configの仕様どうにかならないかなー。
MySettingsで保存する際に、保存場所を指定できたらすごく便利なのに。。

バージョンごとに保存先が変わるとか、どうしてこんな糞仕様なのか。
せめて選べたら良いのに。

886:デフォルトの名無しさん
07/06/29 11:40:44
>>885
MSDNみたら
user.config は System.Windows.Forms.Application.LocalUserAppDataPath プロパティで指定した場所に配置されます。
とある。
試して無いけど。

887:デフォルトの名無しさん
07/06/29 12:38:34
っていうか、恥ずかしいからMy爺さんの機能なんか使うなよw
リソースにアクセスする用途しか使ったことないぞ俺は

888:デフォルトの名無しさん
07/06/29 12:39:42
質問です
VB(どういうかVSのマクロ)で、ドキュメントウィンドウに文字を出力する際に
入力する文字列に,(カンマ)が含まれるとE_FAILが帰ってくるんですが
これをどうにかして,,,,見たいなのも出力できるように出来ませんかね?

具体的に言うならこういうの↓
DTE.ActiveWindow.Selection.text += "nullpo,,"
でエラーなしにする方法、,,で打ち切られないようにする方法が知りたいのです

889:デフォルトの名無しさん
07/06/29 12:43:54
>>887
設定保存とからくじゃないかw
俺はSettingとResource使ってるな

890:885
07/06/29 13:05:37
>>886
おお!

どうもです。
ちょっと調べてみようっと。


>>887
初めちょっと嫌だなーとか思ったけど、使ったら超便利だった。
サクサク保存できる。

891:885
07/06/29 15:53:01
>>886
Read only でした。

892:デフォルトの名無しさん
07/06/29 17:00:10
次のようなクラスを作成する場合、

aaa.bbb()
aaa.ccc.xxx()
aaa.ccc.yyy()
aaa.ddd.zzz()


Public Class aaa
Public Sub bbb()
〜〜〜
End Sub

次のコードは??

End Class

教えて下さい。

893:デフォルトの名無しさん
07/06/29 17:08:31
適当に
やり方はいろいろだと思うけれど・・・・とりあえずで

public class c_ccc
public sub xxx
end sub

public sub yyy
end sub

end class

public class d_ddd

public sub zzz
end sub

end class

public class aaa

public ccc as new c_ccc
public ddd as new d_ddd

public sub bbb
end sub

end class


894:デフォルトの名無しさん
07/06/29 17:33:47
>>893
thx

895:デフォルトの名無しさん
07/06/29 20:45:04
サーバに置いたexeを動かすのにexeと同じ場所にMicrosoft.VisualBasic.Compatibility.dll
が無いと動かないPCと無くても動くPCがあるのは何故なんでしょう?
OSは2KだったりXPだったりだけど、どっちでもなるのならないのあるし、
もちろんみんな.netフレームワーク1.1は入ってるし
(動かないPCでもそのDLL置いただけで動くようになった)

896:デフォルトの名無しさん
07/06/29 22:40:14
>>895
.netを再インストしてみよう
com登録してなくても検索パスにdllをおいただけで動くよ

897:デフォルトの名無しさん
07/06/29 23:04:34
>>896
thx
XPだと.netプリで入ってるけど、一度アンインストールして再インストールすればいいのかな?
一度試してみます

898:デフォルトの名無しさん
07/06/29 23:10:12
>>895
プログラムがバージョン違いのMicrosoft.VisualBasic.Compatibilityを参照してる ってことはない?
.NET 1.1 なら ver. 7.0.3300.0 のはずだが。.NET 2.0は Ver.8.0.0.0 。
あと.NET 1.1 のSPで差が出るかどうかはわからないがその辺も調べてみて。

899:デフォルトの名無しさん
07/06/30 05:23:45
こんにちは、お尋ねします。

各種オブジェクトのイベントの発生順序に関する一覧表のようなものは
どこかのサイトで公開されていたでしょうか?

(例えば TreeViewコントロールのTreeNodeをクリックした後の各種イベント
MouseClick,Click,OnBeforeSelect,OnAfterSelect などの発生順序、等です)

こうしたものはすべてのイベントについて実験していくことは可能なのだとは
思いますが、できたら理論的に分っているものがあれば、そのほうが正確で早い
と思いました。

もしご存知でいらっしゃいましたら教えて戴きたく。よろしくお願いします。

900:デフォルトの名無しさん
07/06/30 06:26:29
強いて言うならMSDN

901:デフォルトの名無しさん
07/06/30 10:34:09
つか常識的にMSDN

902:デフォルトの名無しさん
07/06/30 11:44:35
MSDNとS・G・G・Kって何か似てるよな

903:デフォルトの名無しさん
07/06/30 12:44:35
たぶん OnBeforeSelect は OnAfterSelect の前

904:デフォルトの名無しさん
07/06/30 12:52:13
>>899
そういうこと言いたい気持ちはよく分かるんだけど、
実際自分で試すのが一番正確で速いでしょ、どう考えても。

というか、まあ一概には言えないけどコントロールのイベントの発生順序に
依存するコードというのは、ちょっと不吉な匂いがするよ。

905:デフォルトの名無しさん
07/06/30 14:43:50
>>904
禿同
特にツリービューは気をつけたほうがいい

906:デフォルトの名無しさん
07/06/30 15:05:28
>>900-905

MSDNですと、発生順序に関しては必ずしも明記されていないように思いました。

確か本にはFormのLoad時とClose時のものなどが掲載されているものがありました。
それと同様の情報がどなたか公開されているのではないかと思ったのでした。

それでは、また調べてみます。ありがとうございました。

907:デフォルトの名無しさん
07/06/30 16:34:26
明記されていない場合は順番を当てにしない方がいいと思うよ

908:デフォルトの名無しさん
07/06/30 22:22:46
自分でConsoleWriteでもつかって調べればいいだろうに・・・・

909:デフォルトの名無しさん
07/06/30 22:36:44
俺も前にトレイからの復帰時にtreeview関係のイベントが起きて困ったもんだ

910:デフォルトの名無しさん
07/07/01 12:29:39
順番を当てにされたくないから意図的に明記してないのかもしれないし

911:デフォルトの名無しさん
07/07/01 12:40:46
いやそういう問題でももちろんあるんだけど、
「イベントの順序に依存したコードの不吉な兆候」というのは、
仮にそれ(イベントの順序)が確定しているとしても、それを人間が正しく
認識していないと意味を把握できないコードになりがちだから
保守性や拡張性の点で問題があるということでしょ。

912:デフォルトの名無しさん
07/07/02 15:37:39

GroupBoxの線の色を代えられないとか、どんな仕様にしてるんじゃ.NETは〜!!

ちょぼちょぼ、痒い所に手が届かない風にコントロールなどが
作られてあって面倒くさい。

つうか、折れも画面を作る前に気が付けよ・・・。
は〜〜〜。orz

913:デフォルトの名無しさん
07/07/02 15:51:28
馬鹿の要望きいてるほどMSも暇じゃないんじゃね?

914:デフォルトの名無しさん
07/07/02 16:01:51
文句はチラシの裏に書け。
質問なら、素直に聞け。
思わせぶりな文章書いて、対策案を貰おうとしている様が見え見えで引く。

915:デフォルトの名無しさん
07/07/02 16:32:44
>>913-4
すいません。愚痴でした。
確かにチラシの裏に書いとけば良かったです。

まあ、もう、解決したんですが、その方法もチラ裏に書いときますわ。

いや、しかし.NETはほんとに、ちょっと足りないよ。
DateTimePickerは空に出来ないとか、FileDialogでフォルダとファイルの選択が〜とか。
ま、こちらも解決しているんで、今となってはどうでも良いですが。


916:デフォルトの名無しさん
07/07/02 17:56:26
>>915
だからチラシに書けよ。書き込むな。

917:デフォルトの名無しさん
07/07/02 17:58:22
質問スレに愚痴てwwwwwどんだけwwwwwwwww

918:デフォルトの名無しさん
07/07/02 18:16:42
>>915
>いや、しかし.NETはほんとに、ちょっと足りないよ。
いや、足りないのは君の頭と想像力と解釈力


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

5095日前に更新/282 KB
担当:undef