PDA

View Full Version : سوال: ایجاد مینوی راست کلیک به صورت دستی و نوشتن روال رویدات مورد نظر برای ایتم خاص



voice.of.silence
یک شنبه 15 اردیبهشت 1392, 11:51 صبح
سلام دوستان:
من یک منو برای راست کلیک ایجاد کردم و به آن آیتم های مورد نظر را نوشتم اما هر کاری کردم برای آن رویدات کلیک را نتوانستم بنویسم لطفا مرا در نوشتن کمک نمایید.
نکته: این منو به صورت دستی ایجاد شده یعنی با نوشتن کد نه استفاده از contextmenustrip موجود در Toolbox.
با سپاس.
Voice of Silence

مهرداد صفا
یک شنبه 15 اردیبهشت 1392, 14:19 عصر
با سلام.
در صورت امکان کد مربوط به ساخت منو را قرار بدهید.

fool66
یک شنبه 15 اردیبهشت 1392, 14:57 عصر
ایجاد منوی راست کلیک
ContextMenuStrip a1= new ContextMenuStrip();

اضافه کردن آیتم
a1.Items.Add("متن ایتم");
با دستور زیر هم نمایشش میدی
a1.Show();

voice.of.silence
یک شنبه 15 اردیبهشت 1392, 19:39 عصر
سلام دوست عزیز:
من تا اینجای راه را طی کرده بودم اما مشکل در نوشتن Eventhandler مربوطه هست.
یعنی اینکه اگر منوی ما ایتمی به نام copy دارد چگونه کد مربوطه را برای آن نوشت؟

با تشکر .

erfan_urchin
یک شنبه 15 اردیبهشت 1392, 21:18 عصر
برای این کار شما روی آیتم "کپی" در menustrip دابل کلیک کنید تا رویداد مربوطه باز بشه و بعد کدی مثل زیر رو توش بنویسین (کد زیر عمل کپی متن تکست باکس رو انجام میده)
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox1.Copy();
}

مهرداد صفا
یک شنبه 15 اردیبهشت 1392, 21:30 عصر
با سلام.
در هنگام اضافه کردن هر گزینه به آیتمهای منوی اصلی شما دو گزینه کلی دارید.
1- نام آیتم به همراه تصویر و هندلر آن که میتواند lambda یا یک متود عادی باشد.
2-یک ToolStripMenuItem تعریف کنید و مانند سایر اشیا رویدادهای آن را هندل کنید و به منو اضافه کنید.
به مثال زیر دقت کنید:

//in the name of god
//صل الله علی محمد و آله

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

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public ContextMenuStrip TextboxMenu= new ContextMenuStrip();
public ToolStripMenuItem TextboxPaste;

public Form1()
{
InitializeComponent();
TextboxMenu.Items.Add("copy",null,(s,e)=> Clipboard.SetText(textBox1.Text));
TextboxMenu.Items.Add("cut", null, (s, e) =>
{
Clipboard.SetText(textBox1.Text);
textBox1.Clear();
});
//or
TextboxPaste = new ToolStripMenuItem("paste", null, new EventHandler(PasteToTextbox));
TextboxMenu.Items.Add(TextboxPaste);
textBox1.ContextMenuStrip = TextboxMenu;




}

public void PasteToTextbox(object sender,EventArgs e)
{
if (Clipboard.ContainsText())
{
textBox1.Text = Clipboard.GetText();
}
}





}
}

fool66
دوشنبه 16 اردیبهشت 1392, 03:35 صبح
آماده شد

http://barnamenevis.org/showthread.php?396960-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D9%85%D9%86%D9%88%DB%8C-%D8%B1%D8%A7%D8%B3%D8%AA-%DA%A9%D9%84%DB%8C%DA%A9-%D8%A8%D8%B1%D8%A7%DB%8C-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D9%87%D8%A7-%D9%88-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF-%D8%A2%D9%86-%D8%A8%D8%A7-%DA%A9%D8%AF&p=1761489#post1761489