ByRefで取得した文字列を、モジュール変数に代入し参照型として扱うには?

解決


TT  2005-02-24 22:49:52  No: 119884

参照型の引数(TargetText)にテキストボックスのテキストを渡し、それをモジュール変数(sText)に代入します。
TargetTextを変更した場合はテキストボックスに変更が反映されますが、sTextの値を変更しても変更は反映されません。
対象のテキストを変数として保持して、クラス内の他のメソッドで扱いたいので、sTextの値を変更した時にテキストボックスにも反映されるようにする方法はないでしょうか?必ずしもTextBoxの文字列を扱うわけではないので、対象のTextBoxを直接引数として渡す方法ではなくお願いします。

Private sText as String

Public Sub New(ByRef TargetText As String)
    sText = TargetText
    sText.Trim()
End Sub

Public Sub Sample() as Boolean
    For i As Short = 0 To CShort(sText.Length - 1)
        If (sText.Substring(i, 1) <> "@") Then
            Left(sText,i) 'このコードを実行した時点でテキストボックスに反映したい
            Return (True)
        End If
    Next
    Return (False)
End Sub


TT  2005-02-24 22:52:22  No: 119885

すみません、環境を書き忘れていました。

VisualBasic.NET 2003
WindowsXP Pro

です。よろしくお願いします。


ほげー  2005-02-24 23:25:30  No: 119886

危険な設計だね。
やる意味は全くないよ。


ガッ  2005-02-24 23:28:26  No: 119887

テキストボックス渡したら?


dr  2005-02-25 00:11:29  No: 119888

イベント発生させたらいかが?


TT  2005-02-25 00:32:22  No: 119889

みなさん返答ありがとうございます。

>ほげーさん
危険ですか…、ありがとうございます。考え直すことにします。ただ、一応実現方法を知りたいので解決ボタンはまだ押さない事にさせてください。

>ガッさん
実は最初はそれでやってたんですが、対象がTextBoxだけとは限らなくなったのでやめました。

>drさん
イベントを発生といいますとどういったイベントですか?すみません、ちょっと想像がつかないです。

String.InternedメソッドかString.IsInternedメソッドというものを使えば実現できるかと思ったんですが、
sText = TargetText

sText = String.Interned(TargetText)
に変えて試してみましたが無理でした。


TT  2005-02-25 05:39:51  No: 119890

やっぱ無理なんでしょうか。仕方ないので解決ということにします。
みなさんありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加