VB.NET質問スレ (Part24)
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/12/13(木) 10:03:48VB.NET質問スレ
http://pc11.2ch.net/test/read.cgi/tech/1189038267/
(Partがありませんが、23です。)
テンプレは2〜5くらいまでの間にある予定
0951デフォルトの名無しさん
2008/02/20(水) 16:14:38マルチじゃね
0952デフォルトの名無しさん
2008/02/20(水) 16:54:440953デフォルトの名無しさん
2008/02/20(水) 20:11:58ASP.NET 2.0(VB)でブラウザの戻るやページ内でバックスペースを押したときに
Web ページの有効期限が切れています
と表示されるページがありますが、あのように動作させるにはGlobal.asaxあたりに何か設定する必要があるのでしょうか?
それともIISに設定があったりするのでしょうか?
(その画面の時にF5などで更新を押すと 再送信しますか? と聞かれますがそのあたりも制御できるのでしょうか?)
今一歩そのあたりの深い部分が探しきれないので、ご存知の方がいらっしゃいましたらご教授いただければと思います。
0954デフォルトの名無しさん
2008/02/20(水) 21:12:30「あのように」がどのようになのかさっぱりわからん
とりあえず、まずはPOSTリクエストについて調べろ
0955デフォルトの名無しさん
2008/02/20(水) 21:24:35レスサンクスです。
動きとしては
ページ表示→遷移→戻るボタン(またはバックスペース)→Web ページの有効期限が切れていますと表示されているIEのエラーページ
この動作を実現させたいのです。
POSTリクエスト・・・とりあえずググってきます。
0956デフォルトの名無しさん
2008/02/20(水) 21:34:360957デフォルトの名無しさん
2008/02/20(水) 22:06:49各ページの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になると思っているのですが・・・
正常にメタタグは出力されているのですが、どうにも思った動きになりません。
この設定が悪いのでしょうか?それとも何かほかに設定が・・・
0958デフォルトの名無しさん
2008/02/21(木) 11:12:54AddHandlerに渡すメニューイベントを引数にして関数を呼び出したいのですが
(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)
0959デフォルトの名無しさん
2008/02/21(木) 13:30:46今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
0960デフォルトの名無しさん
2008/02/21(木) 13:33:09いきなりの長文もうしわけないです
0961至急求む
2008/02/21(木) 15:19:48動かしたい。しかし
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
0962デフォルトの名無しさん
2008/02/21(木) 15:28:13参照設定は済ませたか?
0963至急求む
2008/02/21(木) 16:02:44そそれがわからない。
参照の追加のCOMとか色々みてもない。ない。
あっといけた。いけた。よろこべ。でけた。
0964デフォルトの名無しさん
2008/02/21(木) 16:13:330965959
2008/02/21(木) 16:17:30なんとか以下のプログラム記述で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
あと、名前つけ忘れてました、すみません
0966959
2008/02/21(木) 17:11:160967デフォルトの名無しさん
2008/02/21(木) 17:20:570968デフォルトの名無しさん
2008/02/21(木) 17:42:40C#だとそういう記述でできるけど、VBはC#とイベントの取り扱い方が違うからその方法では無理。
今から正解作るからちょっと待ってて
0969968
2008/02/21(木) 18:34:53C#だと簡単なのにVBだと書けないや。
RaiseEventだと自身のイベント以外は呼び出せないみたいだし。
イベントの取り扱い方に制限が掛かってて無理っぽいよ。
0970デフォルトの名無しさん
2008/02/21(木) 18:37:26AddHandler イベント, DirectCast(obj, EventHandler)
0971デフォルトの名無しさん
2008/02/21(木) 18:56:30まあ要はデリゲートを勉強しろってことだけどさ。
0972968
2008/02/21(木) 19:06:50AddressOf演算子というものを使うわけだな。
下記のコードで、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
0973デフォルトの名無しさん
2008/02/21(木) 19:33:01書いてたんだろう968はw
というか、だから本当はデリゲートを理解してないのが問題なんだよ。
0974968
2008/02/21(木) 20:13:25あほかと・・・w
C#にAddressOfなんてないんだよ。
随分必死だなお前w
自作のユーザーコントロールにイベントデリゲートを宣言して、
自作イベントを外から扱ったりしてますけども。
C#と違ってVBだとデリゲートを直接呼び出すことができないことも
分かんないのかね君は
0975958
2008/02/21(木) 20:15:31すっきりしました。
0976デフォルトの名無しさん
2008/02/21(木) 21:10:48統合失調症の人?
俺はエスパーじゃないから君がC#な人かどうかなんて知らない。
っていうか、ここどこ?w
ついでに言えば、
>C#と違ってVBだとデリゲートを直接呼び出すことができないことも
何これ意味がわからん。
0977デフォルトの名無しさん
2008/02/21(木) 21:19:46でもなんでVB.NETのスレにいるのかはわからないけど。
0978デフォルトの名無しさん
2008/02/21(木) 21:36:50C#の方がいいんなら、そっちでやりゃいいじゃん?
0979デフォルトの名無しさん
2008/02/21(木) 21:49:370980デフォルトの名無しさん
2008/02/21(木) 22:02:420981デフォルトの名無しさん
2008/02/21(木) 22:09:420982デフォルトの名無しさん
2008/02/21(木) 22:16:260983デフォルトの名無しさん
2008/02/21(木) 23:07:180984デフォルトの名無しさん
2008/02/22(金) 02:42:17既定の動作は使えなくなります見たいなことが書いてあるけど
DataGridViewで試したらIsInputKeyをオーバーライドしなくてもKeyDownイベントが発生したし
既定の動作(フォーカスの移動)もしっかり生きてるんだけど、これ仕様なのかな?
XP VB2008
0985968
2008/02/22(金) 02:51:25自作クラスに自作イベントを宣言し、そのインスタンスを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
0986984
2008/02/22(金) 02:53:440987984
2008/02/22(金) 05:16:18なんでだー
0988デフォルトの名無しさん
2008/02/22(金) 05:16:44VBもC#も全然わかってない感じだ
0989デフォルトの名無しさん
2008/02/22(金) 06:57:05むしろ出来てしまうといろいろまずいような。
直接DelegateをPublicでさらすなら可能だがそれならVBでも出来る。
0990デフォルトの名無しさん
2008/02/22(金) 06:59:20Delegate 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
0991デフォルトの名無しさん
2008/02/22(金) 08:29:09を公開するだけのことでしょ。
0992デフォルトの名無しさん
2008/02/22(金) 09:08:57それなんてトートロジー?
0993デフォルトの名無しさん
2008/02/22(金) 09:43:50ここの住人もたいしたことね〜なwwwww
0994デフォルトの名無しさん
2008/02/22(金) 10:07:050995デフォルトの名無しさん
2008/02/22(金) 10:12:51今誰かがかいてるから
0996デフォルトの名無しさん
2008/02/22(金) 11:07:240997デフォルトの名無しさん
2008/02/22(金) 11:08:160998デフォルトの名無しさん
2008/02/22(金) 11:10:530999デフォルトの名無しさん
2008/02/22(金) 11:11:33トートロジーって言葉、遣ってみたかったの?
1000デフォルトの名無しさん
2008/02/22(金) 11:11:39↓
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。