C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■32944  Re[1]: blogとWEBを統合したい
□投稿者/ 倉田 有大 -(2009/02/18(Wed) 01:10:20)
    むう、内容が偏りすぎたか、マニアックか、中途半端な質問だったか〜
    とりあえず、Perlで動くblogいろいろ試してみます〜
記事No.32862 のレス /過去ログ58より / 関連記事表示
削除チェック/

■60168  Re[6]: Button上でのMouseUpイベント
□投稿者/ Hongliang -(2011/06/22(Wed) 09:21:23)
    作成物が WPF or Silverlight ということはありませんか?
    もしそうなら Preview 系のイベントを使ってください。
記事No.60135 のレス /過去ログ100より / 関連記事表示
削除チェック/

■86567  Re[3]: Windowsの設定で曜日が変わる
□投稿者/ 魔界の仮面弁士 -(2018/02/15(Thu) 22:40:05)
    No86566 (大阪 さん) に返信
    > 掲示板でのやりとりでは"2018/2/10 9:52:49"の方が

    せめて "2018/02/10 09:52:49" ならばスルーしていたのですが。(^^;


    > 日時書式指定文字列でエスケープ文字の使用例を初めて見ました。
    > \なしでも結果に影響はないようですが

    「/」はカルチャの影響を受けて、他の文字に書き変わるからです。

    OS の地域設定に頼らず、アプリケーション側で CultureInfo を明示すれば
    結果的にエスケープが不要になる可能性はありますけれどね。


    実験として、コントロールパネルの地域設定で、日付の短い形式を
    "yyyy/MM/dd" から "yyyy-MM-dd" に変更してみてください。


    たとえば下記の場合
     s1 = "2018-02-15"
     s2 = "2018/02/15"
    という違いが生じることになります。

    'VB.NET
    s1 = DateTime.Today.ToString("yyyy/MM/dd") 
    s2 = DateTime.Today.ToString("yyyy\/MM\/dd")

    'VBA
    s1 = Format(Now, "YYYY/MM/dd")
    s2 = Format(Now, "YYYY\/MM\/dd")


    >> 今回は日付でしたが、数値においても同様のカルチャ依存の問題がありますので、
    >> 文字列解析を行う場合にはご注意ください。
    > 非英語圏での小数点が「.」ではなく「,」であるといった事でしょうか?

    小数点記号もその一つです。
    他には、通貨記号、負数表現、桁区切りの位置と記号、既定の小数桁数あたり。


    Dim dec As Decimal = -12345678.901D

    s = dec.ToString("C", New CultureInfo("ja-JP")) '「-\1,234,568」日本
    s = dec.ToString("C", New CultureInfo("en-US")) '「($1,234,567.89)」米国
    s = dec.ToString("C", New CultureInfo("en-GB")) '「-£1,234,567.89」英国 / 実際の£は半角

    s = dec.ToString("N", New CultureInfo("ar-EG")) '「12,345,678.901-」アラビア語 (エジプト)
    s = dec.ToString("N", New CultureInfo("de-CH")) '「-12'345'678.90」ドイツ語 (スイス)
    s = dec.ToString("N", New CultureInfo("en-IN")) '「-1,23,45,678.90」英語 (インド)
    s = dec.ToString("N", New CultureInfo("es-ES")) '「-12.345.678,90」スペイン語 (スペイン)
    s = dec.ToString("N", New CultureInfo("es-US")) '「-12345,678.90」スペイン語 (米国)
記事No.86564 のレス /過去ログ148より / 関連記事表示
削除チェック/

■87020  Re[2]: テキストボックス指定行の文字列につきまして
□投稿者/ ak -(2018/04/07(Sat) 15:45:41)
    魔界の仮面弁士 さん

    返答して頂きましてありがとうございました。

    >手元の VB4 + Win7 だと問題が確認できませんでした。
    はい、問題ないことが分りましたので、何か設定、使い方に問題があるのでしょうか?。
    Windows XP/7 (32bit) / VB6.0(SP6)で確かめました。

    >どういう文字列を設定して、
    >何行目を取得したときに、
    >どういう結果になってしまうのか、
    >具体的な情報を頂けると助かります。
    はい、分りました。

    Text1
     ↓
    あいうえお
    かきくけこ
    さしすせそ
    たちつてと

    Text2
     ↓
    1入力(1行目)

    Command1
     ↓
    クリック

    範囲選択
     ↓
    あいうえお
    かきく

    Text2
     ↓
    2入力(2行目)

    Command1
     ↓
    クリック

    範囲選択
     ↓
    さしすせそ


    Text1
     ↓
    111111111
    222222222
    333333333
    444444444
    555555555


    Text2
     ↓
    1入力(1行目)

    Command1
     ↓
    クリック

    範囲選択
     ↓
    111111111

    Text2
     ↓
    2入力(2行目)

    Command1
     ↓
    クリック

    範囲選択
     ↓
    222222222

    >引数の txtBox は ByRef にする必要は無いような…。(本題とは無関係の事ですが)
    問題ないとのことでありますので参考と同じくこのままにしておきます。

    >Win95/98/98SE/ME で動作しなくても構わないのであれば、
    はい、Win95/98/98SE/ME で動作することはありません。
    >SendMessageA ではなく SendMessageW での実装に切り替えてみては如何でしょうか。

    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
    ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    "SendMessageA"⇒"SendMessageW" 1箇所
    "SendMessageA"⇒"SendMessageW"に変更しますと以下に変わりました。

    Text2
     ↓
    1入力(1行目)

    Command1
     ↓
    クリック

    範囲選択
     ↓
    あいうえお

    Text2
     ↓
    2入力(2行目)

    Command1
     ↓
    クリック

    範囲選択
     ↓
    さしす

    以上につき説明が不十分な所があり返答して頂けますと幸いであります。


記事No.87015 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87023  Re[5]: テキストボックス指定行の文字列につきまして
□投稿者/ 魔界の仮面弁士 -(2018/04/07(Sat) 18:19:12)
    No87020 (ak さん) に返信
    > Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
    > ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    > "SendMessageA"⇒"SendMessageW" 1箇所
    > "SendMessageA"⇒"SendMessageW"に変更しますと以下に変わりました。

    EM_LINELENGTH の戻り値や EM_GETLINE に渡すバッファは TCHAR 単位なので、
    A 系では「バイト数」、W 系では「文字数」で扱います。
    ですからバッファサイズも見直さないと駄目ですよ。

    'ReDim Buffer(1 + LineLength)
    ReDim Buffer(1 + 2 * LineLength)




    No87022 (ak さん) に返信
    > 範囲選択に不具合であることは分りました。
    SelStart / SelLength プロパティは、バイト数ではなく文字数単位での指定ですよ。

    たとえば Text1 の中身が下記の 4 行だったとして

    ====
    あさに
    ごはん
    たべた
    はずだ
    ====

    ここで「2 行目」を選択するなら、
     Text1.SelStart = 6
     Text1.SelLength = 3 または 5
    でなければなりません。(末尾改行を含むなら 5 文字選択、含まないなら 3 文字選択)

    EM_LINEINDEX で得られる値は、A 系では「6 バイト目」、W 系では「6 文字目」を意味しますし、
    EM_LINELENGTH で得られる値は、A 系では「6 バイト」、W 系では「3 文字」を意味します。

    なのでこの場合は、SendMessageW の方が手っ取り早いかも。


    > Private Function fGetLineString(ByRef txtBox As TextBox, ByVal LineNo As Long) As String
    操作するべきは Text1 ではなく、txtBox のはずでは?

    それに、範囲選択することを目的とするのなら、
    このネーミングのままにするのは不自然な気もします。
    Sub SelectLine とかの方が良いかもしれません。
記事No.87015 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87024  Re[6]: テキストボックス指定行の文字列につきまして
□投稿者/ ak -(2018/04/07(Sat) 19:09:29)
    魔界の仮面弁士 さん

    再度に渡り回答をして頂きましてありがとうございました。


    >■No87020 (ak さん) に返信
    >> Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
    >> ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    >> "SendMessageA"⇒"SendMessageW" 1箇所
    >> "SendMessageA"⇒"SendMessageW"に変更しますと以下に変わりました。


    > ■No87020 (ak さん) に返信
    > EM_LINELENGTH の戻り値や EM_GETLINE に渡すバッファは TCHAR 単位なので、
    > A 系では「バイト数」、W 系では「文字数」で扱います。
    > ですからバッファサイズも見直さないと駄目ですよ。

    > 'ReDim Buffer(1 + LineLength)
    > ReDim Buffer(1 + 2 * LineLength)

    > ■No87022 
    > > 範囲選択に不具合であることは分りました。
    > SelStart / SelLength プロパティは、バイト数ではなく文字数単位での指定ですよ。

    > たとえば Text1 の中身が下記の 4 行だったとして

    > ====
    > あさに
    > ごはん
    > たべた
    > はずだ
    > ====

    > ここで「2 行目」を選択するなら、
    >  Text1.SelStart = 6
    >  Text1.SelLength = 3 または 5
    > でなければなりません。(末尾改行を含むなら 5 文字選択、含まないなら 3 文字選択)

    > EM_LINEINDEX で得られる値は、A 系では「6 バイト目」、W 系では「6 文字目」を意味しますし、
    > EM_LINELENGTH で得られる値は、A 系では「6 バイト」、W 系では「3 文字」を意味します。

    > なのでこの場合は、SendMessageW の方が手っ取り早いかも

    >> Private Function fGetLineString(ByRef txtBox As TextBox, ByVal LineNo As Long) As String
    > 操作するべきは Text1 ではなく、txtBox のはずでは?

    > それに、範囲選択することを目的とするのなら、
    > このネーミングのままにするのは不自然な気もします。
    > Sub SelectLine とかの方が良いかもしれません。

    以上のことから、範囲選択に関し全般的に見直しする必要があることが分りました。
    特に、ご指摘につきましては一つ一つ時間はかかりますが調べてみます。
    予定としましては、数日中に分りましたら、解決とさせてもらいます。
    色々と、ご指導して頂きまして深謝申し上げます。
記事No.87015 のレス /過去ログ149より / 関連記事表示
削除チェック/

■100455  【C#,VS2022,WPF】クリック待ちを実装したい
□投稿者/ エルデの王 -(2022/08/16(Tue) 03:10:20)

    分類:[.NET 全般] 

    2022/08/16(Tue) 03:18:02 編集(投稿者)


    お世話になっております。
    掲題の通り、C#のWPFです。

    ボタン押下などイベント実行後、
    ある程度処理をしたらクリックを行うまで処理を中断(つまり入力待ち)ということがしたいのですが、
    方法はあるでしょうか?

    ※ダイアログ、メッセージウィンドウなどの別ウィンドウを表示することは使用出来ません。
    ※言い換えれば、FrameのPageをShowDialogで出したい、みたいな感じです。

    ご指導ご鞭撻のほどよろしくお願いいたします……
親記事 /過去ログ175より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -