###前提・実現したいこと
当方、プログラミング初心者です。
現在勉強の一環として、マウスドラッグで矩形を作成し
その矩形にテキストボックスで入力した文字を表示させる
というものを作成しており、矩形は表示できたのですが
文字をプロパティに格納し、プロパティを参照して矩形に文字を表示させる
という部分ができずに困っております。
先輩方、ご教授をお願いいたします。
###発生している問題・エラーメッセージ
テキストボックスに入力された値をプロパティに格納し プロパティを参照して値を矩形に表示させる
###該当のソースコード
namespace Form { public partial class Form1 : Form { /// <summary> /// コンストラクター /// </summary> public Form1() { InitializeComponent(); this.amtb = AttributeNameTextBox;//入力するテキストボックス this.reciter = new RectManIterator(); this.recmanager = new RectangleManager(); } private TextBox amtb; private RectManIterator reciter; private RectangleManager recmanager; /// <summary> /// 属性名指定テキストボックス キープレスイベントハンドラー /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AttributeNameTextBox_KeyPress(object sender, KeyPressEventArgs e) { this.recmanager.Clear(); this.recmanager.Add(this.amtb.Text); this.PicDisplay.Invalidate(); } /// <summary> /// ピクチャーボックス ペイントイベントハンドラー /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void PicDisplay_Paint(object sender, PaintEventArgs e) { if (!String.IsNullOrEmpty(this.selectpath))//矩形の表示 { this.reciter.DrawRect(e.Graphics); this.reciter.DrawRectangles(e.Graphics); } if (!String.IsNullOrEmpty(this.amtb.Text))//文字の表示 { this.reciter.DrawStr(e.Graphics); } } } } namespace Form { /// <summary> /// マウス範囲指定の矩形オブジェクト管理クラス /// </summary> public class RectangleManager { /// <summary> /// 矩形の座標、大きさのデータ /// </summary> public Rectangle FrameRec { set { this.rect = value; } get { return this.rect; } } /// <summary> /// 矩形領域の属性名 /// </summary> public string AttributeName { set { this.attriname = value; } get { return this.attriname; } } /// <summary> /// コンストラクター /// </summary> public RectangleManager() { this.attriname = ""; this.rect = new Rectangle(0,0,0,0); } private string attriname; private Rectangle rect; /// <summary> /// 属性名の追加 /// </summary> /// <param name="st"></param> public void Add(string st) { this.attriname = st; } /// <summary> /// 属性名のクリア /// </summary> public void Clear() { this.attriname = ""; } } } namespace Form { /// <summary> /// 矩形マネージャークラスのイテレータクラス /// </summary> public class RectManIterator { /// <summary> /// 属性名の描画 /// </summary> /// <param name="g"></param> public void DrawStr(Graphics g) { var fnt = new Font("MS ゴシック", 30); var mylist = this.selectlist();//描画対象の矩形リスト var str = this.recmanager.AttributeName;//←"あいうえお"などに変えると表示される foreach (var myrec in mylist) { var po = new Point(myrec.FrameRec.X, myrec.FrameRec.Y);//表示させたい矩形の座標 g.DrawString(str, fnt, Brushes.Pink, po); } } } }
###試したこと
RectManIteratorクラスのDrawStrメソッド内のローカル変数strを
var str = "あいうえお";
などにすると矩形に表示されます。
またマウスの座標の管理(矩形移動時)なども同じようにしていますが
うまく動作しております
###補足情報(言語/FW/ツール等のバージョンなど)
Visual Studio 2015
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/21 08:57