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

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

C# と VB.NET の入門サイト

Re[5]: RichTextBox.AutoWordSelection


(過去ログ 13 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■4009 / inTopicNo.1)  RichTextBox.AutoWordSelection
  
□投稿者/ haya (1回)-(2007/05/31(Thu) 18:20:21)

分類:[C# (Windows)] 


はじめまして。
Visual Stdio 2005 Express Edition のC#(サービスパック1適応すみ)を使用しております。

RichTextBoxのAutoWordSelectionが正しく機能しないようです。

RichTextBoxに(日本語でなく)半角アルファベットの英文を書き込んで、マウスで選択するとき、

AutoWordSelection = false

としても、単語単位の選択しかできません。

RichTextBox
AutoWordSelection
でググってみると海外のForumでもBugだとさわがれています。
それによるとマイクロソフトへのバグ報告もされているのに、修正予定なしとなっているそうで、困ったものです。


この問題を解決する方法をご存じの方いらっしゃるでしょうか?


引用返信 編集キー/
■4012 / inTopicNo.2)  Re[1]: RichTextBox.AutoWordSelection
□投稿者/ ダッチ (134回)-(2007/05/31(Thu) 21:35:09)
> AutoWordSelection = false
>
> としても、単語単位の選択しかできません。
これはデザイナのプロパティより設定したのでしょうか?
そうでしたら、確かに単語単位で選択されてしまいました。
しかし、コードで直接設定すれば問題なく動いているようです。

気になったのが false を設定する前に AutoWordSelection プロパティの値は false になっているんです。
ドキュメントでは true が既定値であると記載されています。
つまり AutoWordSelection プロパティは、初めだけ false なのに true の挙動をしているということです。

RichTextBox.AutoWordSelection プロパティ
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.richtextbox.autowordselection(VS.80).aspx

引用返信 編集キー/
■4018 / inTopicNo.3)  Re[2]: RichTextBox.AutoWordSelection
□投稿者/ haya (2回)-(2007/06/01(Fri) 02:03:01)
コメントありがとうございます。

設定はプログラムの中でおこなっています。
インスタンス作成後、何かのタイミングで勝手にtrueになるのかとおもって、
false に設定する位置を変えてみたりしたのですが、今のところうまくいきません。

実は、デザイナをつかわずにすべてプログラムで定義していたのですが、デザイナだとうまく動くこともある??

明日、ちょっと実験してみます。
引用返信 編集キー/
■4025 / inTopicNo.4)  Re[3]: RichTextBox.AutoWordSelection
□投稿者/ haya (3回)-(2007/06/01(Fri) 15:15:43)
検証してみておもしろいことがわかりました。
以下、あくまでも私の環境での結果です。

FormにrichTextBoxとButtonを配置します。
Button のクリックイベントを以下のようにします。

private void button1_Click( object sender, EventArgs e )
{
richTextBox1.AutoWordSelection = false;
}

ボタンをクリックするごとにAutoWordSelectionが効いたり効かなかったりが切り替わります。
つまり
richTextBox1.AutoWordSelection = !richTextBox1.AutoWordSelection;
のような動作をします。

ですから、プログラムでもデザイナでも、最終的にそのときまでに、richTextBox1.AutoWordSelection を偶数回指定したか奇数回指定したかによって、どちらの挙動になるかがきまるようです。
ですから、自分のプログラムに応じて
richTextBox1.AutoWordSelection = false;
を一回指定か二回指定するのを決定すればよいことになります。

ちなみに、richTextBox1.AutoWordSelectionを読み込むといつでもfalseをしめします。



さて、もう少し検証していると、もっとスマートな方法を発見しました。


richTextBox1.AutoWordSelection = true;
richTextBox1.AutoWordSelection = false;


こうしてすると、常にfalseとして働きます。

マイクロソフトさん、とんでもないバグだぉ〜
(ボクの環境だけ??)

釈然としませんが、とりあえず解決にします。

解決済み
引用返信 編集キー/
■4026 / inTopicNo.5)  Re[4]: RichTextBox.AutoWordSelection
□投稿者/ haya (4回)-(2007/06/01(Fri) 15:28:55)
追伸
以下の

richTextBox1.AutoWordSelection = true;
richTextBox1.AutoWordSelection = false;

は、richTextBox1が表示された後に行わないとだめなようです。
表示前に、コンストラクタなどで定義してもだめです。

わたしはEnterイベントなどにかいています。
引用返信 編集キー/
■4035 / inTopicNo.6)  Re[5]: RichTextBox.AutoWordSelection
□投稿者/ ダッチ (135回)-(2007/06/01(Fri) 22:27:07)
> 検証してみておもしろいことがわかりました。
> 以下、あくまでも私の環境での結果です。
>
> FormにrichTextBoxとButtonを配置します。
> Button のクリックイベントを以下のようにします。
>
> private void button1_Click( object sender, EventArgs e )
> {
> richTextBox1.AutoWordSelection = false;
> }
>
> ボタンをクリックするごとにAutoWordSelectionが効いたり効かなかったりが切り替わります。
現象を確認できました。
AutoWordSelection プロパティの初期値が false だということと、この部分がバグですね。

> ちなみに、richTextBox1.AutoWordSelectionを読み込むといつでもfalseをしめします。
こちらは再現しませんでした。true を設定した場合は true を取得することができました。

> richTextBox1.AutoWordSelection = true;
> richTextBox1.AutoWordSelection = false;

> は、richTextBox1が表示された後に行わないとだめなようです。
> 表示前に、コンストラクタなどで定義してもだめです。
RichTextBox のハンドルが作成された後で無いと有効にならないみたいですね。
フォームロードイベントでは既にハンドルが作成されているようですので、
これでうまくいくと思います。

private void Form1_Load(object sender, EventArgs e)
{
this.richTextBox1.AutoWordSelection = false;
}

> マイクロソフトさん、とんでもないバグだぉ〜
フィードバッグで「修正しない」となっているのが残念ですね。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -