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

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

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

Re[6]: 反転表示のイベント処理の仕方は?


(過去ログ 25 を表示中)

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

■11195 / inTopicNo.1)  反転表示のイベント処理の仕方は?
  
□投稿者/ yuki (6回)-(2007/12/09(Sun) 19:56:46)

分類:[C#] 

テキストエディタで反転表示をしたら、文字数が表示されるプログラムを
作りたいと考えていますが、反転表示はどのような関数をつかえばよいのか
途方に暮れています。
引用返信 編集キー/
■11196 / inTopicNo.2)  Re[1]: 反転表示のイベント処理の仕方は?
□投稿者/ 魔界の仮面弁士 (541回)-(2007/12/09(Sun) 20:08:47)
No11195 (yuki さん) に返信
> テキストエディタで反転表示をしたら、文字数が表示されるプログラムを

こういう事で良いのかな…?


public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();
    richTextBox1.SelectionChanged += delegate 
    {
      label1.Text = richTextBox1.SelectionLength.ToString("#,0");
    };
  }
}

引用返信 編集キー/
■11197 / inTopicNo.3)  Re[2]: 反転表示のイベント処理の仕方は?
□投稿者/ yuki (7回)-(2007/12/09(Sun) 20:24:30)
No11196 (魔界の仮面弁士 さん) に返信
> ■No11195 (yuki さん) に返信
>>テキストエディタで反転表示をしたら、文字数が表示されるプログラムを
>
> こういう事で良いのかな…?
>
>
> public partial class Form1 : Form
> {
> public Form1()
> {
> InitializeComponent();
> richTextBox1.SelectionChanged += delegate
> {
> label1.Text = richTextBox1.SelectionLength.ToString("#,0");
> };
> }
> }
有り難うございます。
私も下記のように考えてみました動きません。どこに問題があるのでしょうか?


private void TextBox1_Enter(object sender, EventArgs e)
{
this.TextBox1.Focus();
this.TextBox1.SelectAll();
// テキストの文字数を取得する
int iLength = this.TextBox1.TextLength;


// 取得したテキストの文字数を表示する
MessageBox.Show(iLength.ToString());


それともう一点
richTextBox1.SelectionChanged += delegate
の部分を日本語で説明するとどうなるのでしょうか?



引用返信 編集キー/
■11198 / inTopicNo.4)  Re[3]: 反転表示のイベント処理の仕方は?
□投稿者/ 魔界の仮面弁士 (542回)-(2007/12/09(Sun) 20:29:34)
No11197 (yuki さん) に返信
> 私も下記のように考えてみました動きません。どこに問題があるのでしょうか?
TextBox には、選択状況が変化したことを通知する機能がありません。
替わりに、RichTextBox を使ってください。私のサンプルも、そうなっていますよね。

> richTextBox1.SelectionChanged += delegate
> の部分を日本語で説明するとどうなるのでしょうか?
「SelectionChanged イベント」を利用するコードを書いているだけです。
下記が参考になるかと。

http://www.microsoft.com/japan/msdn/thisweek/300x10/phase3/AnonymousMethod/cs.aspx
引用返信 編集キー/
■11217 / inTopicNo.5)  Re[3]: 反転表示のイベント処理の仕方は?
□投稿者/ PATIO (4回)-(2007/12/10(Mon) 12:00:34)
No11197 (yuki さん) に返信
> 私も下記のように考えてみました動きません。どこに問題があるのでしょうか?
>
>
> private void TextBox1_Enter(object sender, EventArgs e)
> {
> this.TextBox1.Focus();
> this.TextBox1.SelectAll();
> // テキストの文字数を取得する
> int iLength = this.TextBox1.TextLength;
>
>
> // 取得したテキストの文字数を表示する
> MessageBox.Show(iLength.ToString());

ちょっと感じた事を。
yukiさんは御自分で書かれたコードがどんな事をしていると考えていますか?

私はこのコードを見て、

何らかのイベントでTextBox1_Enterが呼び出されると、TextBox1にフォーカスを当てて、
TextBox1の中の文字を全て選択状態にし、TextBox1の文字の数を取得して
メッセージボックスで表示する

と言う風に考えたんですが、どうでしょうか?

御自分がイメージされている処理にあっていますか?
私は微妙に違うように感じます。

あと、TextBox1_Enterは呼び出されているでしょうか?
呼び出されていないならそもそもイベントの所で既に躓いている事になりますけれど。

引用返信 編集キー/
■11232 / inTopicNo.6)  Re[4]: 反転表示のイベント処理の仕方は?
□投稿者/ yuki (8回)-(2007/12/10(Mon) 14:44:12)
No11198 (魔界の仮面弁士 さん) に返信
ありがとうございます
> http://www.microsoft.com/japan/msdn/thisweek/300x10/phase3/AnonymousMethod/cs.aspx

高度なテクニックなようなので後ほどじっくり勉強してみます。
本当に有り難うございます。

引用返信 編集キー/
■11233 / inTopicNo.7)  Re[4]: 反転表示のイベント処理の仕方は?
□投稿者/ yuki (9回)-(2007/12/10(Mon) 14:49:46)
No11217 (PATIO さん) に返信
>>private void TextBox1_Enter(object sender, EventArgs e)
>> {
>> this.TextBox1.Focus();
>> this.TextBox1.SelectAll();
>> // テキストの文字数を取得する
>> int iLength = this.TextBox1.TextLength;
>>
>>
>> // 取得したテキストの文字数を表示する
>> MessageBox.Show(iLength.ToString());
>
> ちょっと感じた事を。
> yukiさんは御自分で書かれたコードがどんな事をしていると考えていますか?
>
> 私はこのコードを見て、
>
> 何らかのイベントでTextBox1_Enterが呼び出されると、TextBox1にフォーカスを当てて、
> TextBox1の中の文字を全て選択状態にし、TextBox1の文字の数を取得して
> メッセージボックスで表示する
>
> と言う風に考えたんですが、どうでしょうか?
>
> 御自分がイメージされている処理にあっていますか?
> 私は微妙に違うように感じます。
>
> あと、TextBox1_Enterは呼び出されているでしょうか?
> 呼び出されていないならそもそもイベントの所で既に躓いている事になりますけれど。
>

下記のようにしてみると自分のつくりたいものに一歩近づきましたが、
反転表示する前に文字数が表示されます。
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
this.richTextBox1.Focus();
this.richTextBox1.SelectAll();
// テキストの文字数を取得する
int iLength = this.richTextBox1.TextLength;


// 取得したテキストの文字数を表示する
MessageBox.Show(iLength.ToString());

}

TextBox1_Enterはどういうことを意味しているイベントなのでしょうか?
richTextBox1_TextChangedは、テキスト内容が変化したときのイベントですよね。
すみません、文法をしっかりおぼえておらず、どちらかいうと思いついたものを作りながら文法を
覚えていくような学習をしているものですから、(-_-;)
引用返信 編集キー/
■11235 / inTopicNo.8)  Re[5]: 反転表示のイベント処理の仕方は?
□投稿者/ ぽぴ王子 (301回)-(2007/12/10(Mon) 15:16:33)
ぽぴ王子 さんの Web サイト
No11233 (yuki さん) に返信

> 下記のようにしてみると自分のつくりたいものに一歩近づきましたが、
> 反転表示する前に文字数が表示されます。
>  private void richTextBox1_TextChanged(object sender, EventArgs e)
>         {
>             this.richTextBox1.Focus();
>             this.richTextBox1.SelectAll();
>             // テキストの文字数を取得する
>             int iLength = this.richTextBox1.TextLength;
> 
> 
>             // 取得したテキストの文字数を表示する
>             MessageBox.Show(iLength.ToString());
> 
>         }

richTextBox1.SelectAll() が実際に効果をあらわすのは、このイベントを抜けたあとになります。
その前に MessageBox.Show で文字数を表示しているので反転表示する前に文字数が表示されます。

> TextBox1_Enterはどういうことを意味しているイベントなのでしょうか?

まずは MSDN をじっくり読んでみるといいです。
TextBox1 の Enter イベントということですから、TextBox の Enter イベントであろうということが
わかります(Button に TextBox1 なんて名前をつけていたら知りませんが)。
ただ、この場合 TextBox の Enter イベントに対する説明はないので、元になったクラスである
Control の Enter イベントを見ることになります。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.enter%28VS.80%29.aspx

> richTextBox1_TextChangedは、テキスト内容が変化したときのイベントですよね。
> すみません、文法をしっかりおぼえておらず、どちらかいうと思いついたものを作りながら文法を
> 覚えていくような学習をしているものですから、(-_-;)

すみませんと謝るぐらいであれば、ちゃんと文法をしっかりおぼえるのが先だと思います。
何も全部覚える必要はありませんし、TextBox1_Enter は TextBox の Enter イベントって言うこと
なのかな?ぐらいで十分です。ただできればいろいろな本を読んで(どれがいいとは薦められませんが)
「たまたまいじったらこうなった」ではなく「こういう原理で動いているからこう動くのだな」
ぐらいに理解を深められるようになっておくと良いと思います。

PATIO さんが書かれていることも似たような話ではないかと思いますが、どうでしょうか。

引用返信 編集キー/
■11243 / inTopicNo.9)  Re[5]: 反転表示のイベント処理の仕方は?
□投稿者/ よねKEN (94回)-(2007/12/10(Mon) 19:36:27)
> richTextBox1_TextChangedは、テキスト内容が変化したときのイベントですよね。

魔界の仮面弁士さんのアドバイスでおっしゃっているのは、
TextChangedイベントではなく、SelectionChangedイベントですが、
その点は伝わってますか?


引用返信 編集キー/
■11267 / inTopicNo.10)  Re[6]: 反転表示のイベント処理の仕方は?
□投稿者/ PATIO (6回)-(2007/12/11(Tue) 11:51:07)
No11243 (よねKEN さん) に返信
>>richTextBox1_TextChangedは、テキスト内容が変化したときのイベントですよね。
>
> 魔界の仮面弁士さんのアドバイスでおっしゃっているのは、
> TextChangedイベントではなく、SelectionChangedイベントですが、
> その点は伝わってますか?

そのへんが気になったので関数が呼ばれる場面について突っ込んだんです。
選択されたらという話なんですが、書いている関数はEnterキーを押した時のイベントで起動されるわけだから
恐らく目的にあっていないのでは?という話なのです。
また、マウスで選択されたらということなのだろうと思ったので
自分で選択をしているのは意味が無いのではないかなと思いました。

具体的なオペレーションと書いているコードが微妙に違うのではないかと。

したい事を整理して必要なコードをひねり出す為には、
今書いているコードが何をしているのかをきちんと理解しないと無理なんです。
そういう意味ではコードを書くときには、書いたコードの内容を一々確認していかないと
コードの内容が発散してしまって自分自身でも収拾が付かなくなってしまいます。
目の前のコードがどういうことを実現しているのかをまず理解する事が必要でしょう。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -