質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

解決済

3回答

6224閲覧

TextBox.LineCountが参照できない(C#)

morinokuma0621

総合スコア81

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

0グッド

0クリップ

投稿2014/12/04 07:53

テキストボックスの行数を取得しようとして、
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.textbox.linecount%28v=vs.110%29.aspx
こちらにあるLineCountを使ってみましたが、
LineCountが参照できないと表示されます。

int i = txtbox.LineCount
としてみるのですが、予測候補にも出てきません。
.NET Frameworkは3.5や4.5で試しても一緒でした。

参照は、

lang

1using System; 2using System.IO; 3using System.Text; 4using System.Windows.Forms;

この4つを記述しています。

何か根本的なところで間違っている気もしますが、
もし何か理由がわかりましたら、
教えていただけないでしょうか。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

Windows.Controls 名前空間を using で指定し、
PresentationFramework.dll を参照に含める必要があります。

Namespace: System.Windows.Controls
Assembly: PresentationFramework (in PresentationFramework.dll)

なので、ソースには以下を指定します。

lang

1using System.Windows.Controls;

DLLの指定の仕方はVisualStudioかMonoか、使っている開発環境で変わってくると思わしいですが・・・
VisualStudio2013の場合、
ソリューションエクスプローラーの参照→参照の追加→アセンブリ→
PresentationFramework にチェックを入れてOKボタン押下
でできます。

こんな感じで指定します(VisualStudio2013)
![イメージ説明]WIDTH:600


こちらではこれで

lang

1 TextBox t = new TextBox(); 2 var a = t.LineCount;

が通ります・・・

わたしではこれ以上調べようがなさそうです。


System.Windows.Controls.TextBox は、
WPFアプリケーションで使用されるテキストボックスです。

Windows Forms Applicationで開発している場合、使えないかもですね。。

投稿2014/12/04 08:11

tonitakekawa

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

morinokuma0621

2014/12/04 08:14

間違えてベストアンサー押してしまいました……取り消しできないのでしょうか……。 すみません、VisualStudio2012 を使っていて、参照でPresentationFrameworkを追加して、Windows.ControlsのUsing設定も行いましたが、やはりまだLineCountは参照できません。
morinokuma0621

2014/12/04 08:34

何度もご回答ありがとうございます。 調べてみましたところ、TextBoxが2種類ありました。System.Windows.Forms型のTextBoxと、System.Windows.Controls型のTextBoxです。 Controls型のTextBoxのテキストボックスではLineCountが出てきましたが、Forms型では出てきませんでした。無理やり(System.Windows.Controls.TextBox)txtboxとかしてみましたが、型変換は無理でした。 というところまではなんとかわかりましたが、ひとまず理由はわかったので、これで一旦締めようと思います。ありがとうございました。
guest

0

回答ではありませんが、txtbox自体はそのタイミングで有効なのでしょうか?

ちなみに、ビルド時にエラーが出るのでしょうか?

投稿2014/12/04 07:45

TaMaMhyu

総合スコア1356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

morinokuma0621

2014/12/04 07:51

もちろんテキストボックス自体は有効です。 直前に 「string f = txtbox.Text;」 みたいな式を使っていますし、 LineCountの行を消せばビルドは成功します。
TaMaMhyu

2014/12/04 07:58

ちょっと気になるのが型が違う認識になっているのではないかということですね… TextはTextBoxBaseのプロパティで、LineCountはTextBoxのプロパティですね。 Lines.Lengthは使えるでしょうか?
morinokuma0621

2014/12/05 06:36

ごめんなさい、今気づきました。 txtbox.Lines.Length で行数取得できました!!ありがとうございました!本当に申し訳ありません、間違ってベストアンサーを押してしまったばっかりに……こちらをベストアンサーとすべきなのに……。
TaMaMhyu

2014/12/05 07:29

昔はまった記憶があるのですが、どう解決したのか記憶になく… 適切な回答にはなっていないかもしれません。
guest

0

asp.netのコントロールではありませんか?そうであれば該当のクラスはSystem.Web.UI.WebControls.TextBoxになります。
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.textbox(v=vs.110).aspx
このクラスだとLineCountはプロパティに有りません。

投稿2014/12/04 08:31

BlueMoon

総合スコア1339

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

morinokuma0621

2014/12/04 08:36

ご回答ありがとうございます。ASPではなく、Windows Formsアプリです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問