//──────────────────────────────────────── private void UsercontrolTextbox_MouseEnter(object sender, EventArgs e) { // マウスが領域に入ってきたら、 // テキストボックスを可視化。 UsercontrolTextbox uctTxt = (UsercontrolTextbox)sender; if (!uctTxt.customcontrolTextbox1.ReadOnly) { // 読取専門でなければ可視化。 uctTxt.customcontrolTextbox1.Visible = true; } //// テキストボックス左上の画面位置 //Point p0 = new Point(0, 0); //Point p1 = uctTxt.PointToScreen(p0);//プラス値が返ってくる。 //Point p2 = this.ControlCommon.MoControlMediator.Form.PointToClient(p0);//マイナス値が返ってくる。 //// p1+p2で、クライアント領域上での位置になる。 ////ystem.Console.WriteLine("p1=[" + p1.X + "," + p1.Y + "] p2=[" + p2.X + "," + p2.Y + "]"); //mrTextbox.Bounds = new Rectangle( // p1.X+p2.X, // p1.Y+p2.Y, // uctTxt.CcTextbox.Bounds.Width, // uctTxt.CcTextbox.Bounds.Height // ); }
//──────────────────────────────────────── private void UsercontrolTextbox_Leave(object sender, EventArgs e) { // テキストボックスがフォーカスを失ったら、 // テキストボックスを不可視化。 UsercontrolTextbox ucTxt = (UsercontrolTextbox)sender; ucTxt.customcontrolTextbox1.Visible = false; }
//──────────────────────────────────────── #endregion #region イベントハンドラー //──────────────────────────────────────── private void UsercontrolTextbox_SizeChanged(object sender, EventArgs e) { UsercontrolTextbox uctTxt = (UsercontrolTextbox)sender; this.customcontrolTextbox1.Width = uctTxt.Width; this.customcontrolTextbox1.Height = uctTxt.Height; // // 縦幅を固定して、サイズ変更時も大きさを伸ばさないようにしたい場合は // この記述を有効にしてください。 // // ucWindow.Height = this.ccWindow.Height; }
//──────────────────────────────────────── public Usercontrol Perform( Expression_Node_StringImpl ec_FcName, MemoryApplication owner_MemoryApplication ) { // // ▲▲▲ ※暫定で テキストボックス // UsercontrolTextbox uctTxt = new UsercontrolTextbox(); // 名前だけ初期設定 uctTxt.Expression_Name_Control = ec_FcName; uctTxt.ControlCommon.Owner_MemoryApplication = owner_MemoryApplication; return uctTxt; }
//──────────────────────────────────────── public Usercontrol Perform( Expression_Node_StringImpl ec_FcName, MemoryApplication owner_MemoryApplication ) { // // 既に起動されているウィンドウに、パネルを埋め込む指定です。 // UsercontrolTextbox uctTxt = new UsercontrolTextbox(); // 名前だけ初期設定 uctTxt.Expression_Name_Control = ec_FcName; uctTxt.ControlCommon.Owner_MemoryApplication = owner_MemoryApplication; return uctTxt; }
//──────────────────────────────────────── public Usercontrol Perform( Expression_Node_StringImpl ec_FcName, MemoryApplication owner_MemoryApplication ) { UsercontrolTextbox uctTxt = new UsercontrolTextbox(); // 名前だけ初期設定 uctTxt.Expression_Name_Control = ec_FcName; uctTxt.ControlCommon.Owner_MemoryApplication = owner_MemoryApplication; // // 複数行入力のテキストボックスに設定することで、 // テキストエリアになります。 // uctTxt.Multiline = true; uctTxt.UsercontrolScrollbars = ScrollBars.Both; return uctTxt; }
//──────────────────────────────────────── /// <summary> /// テキストボックスの絵を描画。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void UsercontrolTextbox_Paint(object sender, PaintEventArgs e) { UsercontrolTextbox uctTxt = (UsercontrolTextbox)sender; if (!uctTxt.customcontrolTextbox1.Visible) { // 不可視のときに描画。 // 自分の内側に線を引ければよい。 Rectangle rect = new Rectangle( 0, 0, uctTxt.Width - 1, uctTxt.Height - 1 ); if (uctTxt.customcontrolTextbox1.ReadOnly) { // 編集不可能。 e.Graphics.FillRectangle(Brushes.LightGray, rect); } else { // 編集可能。 e.Graphics.FillRectangle(Brushes.White, rect); } // 枠線 e.Graphics.DrawRectangle( Pens.Black, rect ); // テキスト表示領域は、四角の線から1ドット離すように小さくします。 rect.Inflate(-2, -2); rect.Offset(-1, +1); e.Graphics.DrawString(this.customcontrolTextbox1.Text, this.customcontrolTextbox1.Font, Brushes.Black, rect); } }
//──────────────────────────────────────── /// <summary> /// 項目の置換 /// /// 現在選択されているアイテムを、テキストボックスに入力されているテキストに置換します。 /// 置換に成功した場合、テキストボックスは空になります。 /// </summary> /// <param name="textBox"></param> /// <returns>追加が成功していれば真、失敗していれば偽。</returns> public List<ReplacesResultImpl> ReplaceItemFromTextbox(UsercontrolTextbox uctTxt) { return this.ReplaceItemFromTextbox(new TextboxWrapperImpl(uctTxt)); }
//──────────────────────────────────────── /// <summary> /// 項目の追加 /// /// テキストボックスに入力されているテキストを、リストの項目として追加します。 /// 追加に成功した場合、テキストボックスは空になります。 /// </summary> /// <param name="textBox"></param> /// <returns>追加が成功していれば真、失敗していれば偽。</returns> public bool AddItemFromTextbox(UsercontrolTextbox uctTxt) { return this.AddItemFromTextbox(new TextboxWrapperImpl(uctTxt)); }
public TextboxWrapperImpl(UsercontrolTextbox uctTxt) { this.usercontrolTextbox2 = uctTxt; }