PDA

View Full Version : Cut , Copy , paste



ehsanara
یک شنبه 06 تیر 1389, 14:30 عصر
سلام دوستان
چطور میشه توی contextMenuStrip سه عمل cut , copy , Paste کد نویسی کرد؟
میخوام برا این سه عمل توی کلیک راست آیکن بزارم
ممنون میشم راهنمایی کنید

mohammad_2039
یک شنبه 06 تیر 1389, 14:38 عصر
سلام
راستش دقیقا یادم نیست ولی باید از خواص Cliboard استفاده کنی. اول کپی کنی تو Cliboard بعد از اونجا Paste کنی به محل مورد نظر. تو MSDN بگرد یه چیزایی پیدا میکنی اگه پیدا نکردی یه پیام خصوصی بده ببینم چیکار میتونم واست بکنم.:لبخندساده:

Majid&Masoud
یک شنبه 06 تیر 1389, 14:59 عصر
سلام
این کد کپیه.بقیشم شبیه همینه


TextBox copytxt = (TextBox)this.ActiveControl;
copytxt.Copy();



TextBox cuttxt = (TextBox)this.ActiveControl;
cuttxt.Cut();



TextBox pastetxt = (TextBox)this.ActiveControl;
pastetxt.Paste();

ehsanara
یک شنبه 06 تیر 1389, 15:31 عصر
از همه دوستان ممنون
کدی که دوست قبلی فرستادن درست کار میکنه
ولی من میخوام برا یه صفحه کامل این کار رو انجام بده مثل کلیک راست توی ویندوز که این امکانات رو داره و میشه هر متنی رو که انتخاب میکنه کپی کنه

mohammad_2039
یک شنبه 06 تیر 1389, 16:34 عصر
از همه دوستان ممنون
کدی که دوست قبلی فرستادن درست کار میکنه
ولی من میخوام برا یه صفحه کامل این کار رو انجام بده مثل کلیک راست توی ویندوز که این امکانات رو داره و میشه هر متنی رو که انتخاب میکنه کپی کنه
برو دنبال اون چیزی که بهت گفتم:چشمک:

csharpdoost
یک شنبه 06 تیر 1389, 18:55 عصر
از همه دوستان ممنون
کدی که دوست قبلی فرستادن درست کار میکنه
ولی من میخوام برا یه صفحه کامل این کار رو انجام بده مثل کلیک راست توی ویندوز که این امکانات رو داره و میشه هر متنی رو که انتخاب میکنه کپی کنه
همین کدی که ایشون گفتند درسته حتی برای یک صفحه .شما باید برای هر شیئی که میخواهید کلیک راست روی اون عمل کنه یک contextmenustrip جداگانه قرار دهید و کلیک راست رو براش تعریف کنید حتی برای خود فرم .

ehsanara
دوشنبه 07 تیر 1389, 08:11 صبح
همین کدی که ایشون گفتند درسته حتی برای یک صفحه .شما باید برای هر شیئی که میخواهید کلیک راست روی اون عمل کنه یک contextmenustrip جداگانه قرار دهید و کلیک راست رو براش تعریف کنید حتی برای خود فرم .

ممنون دوست عزیز
منم عرض کردم که این کد درست کار می کنه ولی مشکل اینه که این کد برای Cut & Copy فقط روی محتوای TextBoxها کار می کنه ولی من اگه بخوام محتوای یک Lable یا ComboBox یا یه قسمت از DataGrid رو کپی کنم Error میده

ehsanara
دوشنبه 07 تیر 1389, 08:41 صبح
اگه اینطور بگم بهتره که می خوام هر متنی که توی فرم انتخاب کردیم Copy و Paste کنه

csharpdoost
دوشنبه 07 تیر 1389, 10:10 صبح
ممنون دوست عزیز
منم عرض کردم که این کد درست کار می کنه ولی مشکل اینه که این کد برای Cut & Copy فقط روی محتوای TextBoxها کار می کنه ولی من اگه بخوام محتوای یک Lable یا ComboBox یا یه قسمت از DataGrid رو کپی کنم Error میده
دوست عزیز جمله را با دقت بخون گفتم برای هر شیئی باید یک contextmenustripجدا تعریف کنی چه برای lableو چه برای هر چیز دیگه

ehsanara
دوشنبه 07 تیر 1389, 10:35 صبح
دوست عزیز جمله را با دقت بخون گفتم برای هر شیئی باید یک contextmenustripجدا تعریف کنی چه برای lableو چه برای هر چیز دیگه

دوست عزیز شما توی ContextMenuStrip ویندوز یه گزینه Copy یا Cut یا Paste بیشتر نمیبینید

csharpdoost
دوشنبه 07 تیر 1389, 10:46 صبح
دوست عزیز شما توی ContextMenuStrip ویندوز یه گزینه Copy یا Cut یا Paste بیشتر نمیبینید
تو ی پست اولتون گفتید که عمل copy و cutو paste را انجام بده .
شاید منظورتون رو متوجه نشدم میشه بیشتر توضیح بدید و دقیقا بگید چی میخواهید؟

ehsanara
دوشنبه 07 تیر 1389, 10:58 صبح
من می خوام این 3عمل رو توی منویی که با کلیک راست توی فرم باز میشه انجام بدم
یعنی کاربر هرچی Mark کرد (HighLight) زمانی که روی Copy کلیک کرد اون قسمت کپی شه
کدی که دوستمون فرستادن فقط مقادیری که داخل TextBoxها HighLight می کنیم Copy می کنه
اینطور هم میشه گفت که برا اعمال Ctrl+c ، Ctrl+p ، Ctrl+x کلید تعریف کنی

csharpdoost
دوشنبه 07 تیر 1389, 11:23 صبح
خب به جای کلمه textbox میتونی lable یا هر چیز دیگه که میخوای بنویسی .تا این خاصیت ها برای اون فعال بشند .
برای shortcut ها هم باید عین همین کدها تعریف بشه .

ehsanara
دوشنبه 07 تیر 1389, 14:35 عصر
نمیشه عزیزم
برا comboBox چی؟
Lable?
متن
DataGrid
و...

csharpdoost
دوشنبه 07 تیر 1389, 14:50 عصر
نمیشه عزیزم
برا comboBox چی؟
Lable?
متن
DataGrid
و...
با عرض معذرت حرف شما صحیحه .
این چیزی که میخواهید منطقی هست یا نه؟(کپی از lableیا combobox)

ehsanara
دوشنبه 07 تیر 1389, 15:03 عصر
دوست من شاید منظور من رو درست متوجه نشده باشی
یه پروژه جدید بساز توش textBox , comboBox, dataGrid و .... قرار بده
بعد اجرا کن
یه متن رو توی هر کدوم که خواستی HighLight کن بعد کلیک راست کن توی منویی که باز میشه میبینید که Copy , ... هست
من میخوام کد اون رو برای برنامه ام بنویسم

mmd2009
دوشنبه 07 تیر 1389, 15:18 عصر
با سلام

دوست عزیز مثال زیر رو ببین

شما میتونی هم نام لیبل رو درون کلیبورد قرار بدی و paste کنی اون تو یک textbox و همچنین میتونی مقدار درون textbox رو کپی کنی و تو label اونو paste کنی

امیدوارم به دردت بخوره

salehbagheri
دوشنبه 07 تیر 1389, 18:51 عصر
نمیشه عزیزم
برا comboBox چی؟
Lable?
متن
DataGrid
و...
دوست عزیز شما فقط میتونی رشته متنی کنترلهایی رو Copy/Cut کنی که قابلیت Select کردن متن رو داشته باشند! شما چه جوری متن Lable رو کپی کردید؟

کنترلهای TextBox و ComboBox این قابلیت رو دارند که میتونید به روش زیر عمل کنید:
البته کد رو از سایت MSDN گرفتم.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Samples
{
public partial class ToolMenu : Form
{
public ToolMenu()
{
InitializeComponent();
}

private void ToolMenu_Load(object sender, EventArgs e)
{
myComboBox comb = new myComboBox();
comb.Location = new Point(300, 200);
this.Controls.Add(comb);
}

private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
Control ctrl = this.ActiveControl;
if (ctrl != null)
{
if (ctrl is TextBox)
{
TextBox tx = (TextBox)ctrl;
tx.Copy();
}
if (ctrl is myComboBox)
{
myComboBox cb = (myComboBox)ctrl;
cb.Copy();
}
}
}

private void cutToolStripMenuItem_Click(object sender, EventArgs e)
{
Control ctrl = this.ActiveControl;
if (ctrl != null)
{
string copied = "";
int sPos;
if (ctrl is TextBox)
{
TextBox tx = (TextBox)ctrl;
tx.Cut();
}
if (ctrl is myComboBox)
{
myComboBox cb = (myComboBox)ctrl;
cb.Cut();
}
}
}

private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
{
Control ctrl = this.ActiveControl;
if (ctrl != null)
{
if (ctrl is TextBox)
{
TextBox tx = (TextBox)ctrl;
tx.Paste();
}
if (ctrl is myComboBox)
{
myComboBox cb = (myComboBox)ctrl;
cb.Paste();
}
}
}

private void undoToolStripMenuItem_Click(object sender, EventArgs e)
{
Control ctrl = this.ActiveControl;
if (ctrl is TextBox)
{
TextBox tx = (TextBox)ctrl;
tx.Undo();
}
if (ctrl is myComboBox)
{
myComboBox cb = (myComboBox)ctrl;
cb.Undo();
}
}
}

public class myComboBox : ComboBox
{
private string oldText;

public myComboBox()
{
oldText = this.Text ;
}

public void Copy()
{
if (this.SelectedText != string.Empty)
{
Clipboard.SetText(this.SelectedText);
}
}

public void Cut()
{
if (this.SelectedText != string.Empty)
{
//set old text of combox, this value is need when undo
this.oldText = this.Text;

string copied = this.SelectedText;
int sPos = this.SelectionStart;
this.SelectedText = this.SelectedText.Replace(copied, "");
this.SelectionStart = sPos;
Clipboard.SetText(copied);
}
}

public void Paste()
{
this.oldText = this.Text;

string txtInClip = Clipboard.GetText();
int sPos = this.SelectionStart;
if (this.SelectedText != string.Empty)
{
this.SelectedText = this.SelectedText.Replace(this.SelectedText,
txtInClip);
}
else
{
this.Text = this.Text.Insert(this.SelectionStart, txtInClip);
this.SelectionStart = sPos + txtInClip.Length;
}
}

public void Undo()
{
if (this.oldText != string.Empty)
{
this.Text = this.oldText;
}
}
}
}

mmd2009
دوشنبه 07 تیر 1389, 19:09 عصر
دوست عزیز شما فقط میتونی رشته متنی کنترلهایی رو Copy/Cut کنی که قابلیت Select کردن متن رو داشته باشند! شما چه جوری متن Lable رو کپی کردید؟

[/source]

خب تکست اون رو تو کلیبورد گذاشتم سپس هر جا میخوای میتونی paste کنی اونو

و واسه paste کردن تو خاصیت تکست هم اومدم برابر با کلیبورد قرارش دادم

s0m4y3h
یک شنبه 03 دی 1391, 19:33 عصر
لطف ميكنيد كد اين عمليات هارو هم بنويسيدممنون ميشم.
Print
chengFontDialog
Cheng color
Undo Redo