PDA

View Full Version : سوال: عدم کپی متن در تکست باکس



ashkan1234
سه شنبه 18 تیر 1392, 19:12 عصر
با سلام!
دوستان چطور میشه از کپی اطلاعات در تکست باکس جلوگیری کرد؟
منظورم از هر راهی هست:
چه کلیک راست!
چه کلید App با کی اسکی 93
و راه سوم هم کلید ترکیبی Ctrl+V
میخوام هر سه تا راه رو ببندم!
واسه کلیک راست یه راهی خودم پیدا کردم!ولی اون دوتا رو نه!:لبخند::لبخند:
راستی کلیپ برد سیستم رو پاک کنم دیگه نمیشه کپی یا پیست کرد!
این روش خوبیه٬ولی آیا میشه بهش اعتماد کرد؟طوری که کاربر دورش نزنه؟
private void textBox1_Enter(object sender, EventArgs e)
{
System.Windows.Forms.Clipboard.Clear();
}

مهرداد صفا
سه شنبه 18 تیر 1392, 19:59 عصر
با سلام!
دوستان چطور میشه از کپی اطلاعات در تکست باکس جلوگیری کرد؟
منظورم از هر راهی هست:
چه کلیک راست!
چه کلید App با کی اسکی 93
و راه سوم هم کلید ترکیبی Ctrl+V
میخوام هر سه تا راه رو ببندم!
واسه کلیک راست یه راهی خودم پیدا کردم!ولی اون دوتا رو نه!:لبخند::لبخند:
راستی کلیپ برد سیستم رو پاک کنم دیگه نمیشه کپی یا پیست کرد!
این روش خوبیه٬ولی آیا میشه بهش اعتماد کرد؟طوری که کاربر دورش نزنه؟
private void textBox1_Enter(object sender, EventArgs e)
{
System.Windows.Forms.Clipboard.Clear();
}

باسلام.
روش بدی نیست. البته اگر کاربر خیلی حرفه ای داشته باشید راههایی برای حل این قضیه هست ولی نه در سطح کاربری معمولی ویندوز.
فقط کمی به کاربر احترام بگذارید و فقط اگر متن درون clipBoard بامتن TextBox برابر بود این کار را بکنید!
در ضمن باید با یک تایمر چک کنید چون کاربر ابتدا وارد Textbox شده و بعد اقدام به کپی می کند.
برای جلوگیری از paste هم میتوانید از رویداد TextChanged استفاده کنید.

ashkan1234
سه شنبه 18 تیر 1392, 20:11 عصر
باسلام.
روش بدی نیست. البته اگر کاربر خیلی حرفه ای داشته باشید راههایی برای حل این قضیه هست ولی نه در سطح کاربری معمولی ویندوز.
فقط کمی به کاربر احترام بگذارید و فقط اگر متن درون clipBoard بامتن TextBox برابر بود این کار را بکنید!
در ضمن باید با یک تایمر چک کنید چون کاربر ابتدا وارد Textbox شده و بعد اقدام به کپی می کند.
برای جلوگیری از paste هم میتوانید از رویداد TextChanged استفاده کنید.
من منظورم همون Paste بود بیشتر!
اگه ممکنه یکم بیشتر توضیح بدید و بفرمایید کاربر حرفه ای چطور میتونه دور بزنه؟

مهرداد صفا
سه شنبه 18 تیر 1392, 20:22 عصر
من منظورم همون Paste بود بیشتر!
اگه ممکنه یکم بیشتر توضیح بدید و بفرمایید کاربر حرفه ای چطور میتونه دور بزنه؟

با استفاده از توابعی مثل SetWindowText و یا با ارسال پیغام با تابع SendMessage از توابع User32 ویندوز و...........................................
روشهای زیادی هست ولی من منظورم در مورد کپی بود که اگر متن درون Textbox برای کاربر اهمیت زیادی داشته باشد میتواند این کار را بکند ولی فکر نمی کنم در مورد paste (در حالت عادی) کسی نیاز به این کار داشته باشد.

ashkan1234
سه شنبه 18 تیر 1392, 20:32 عصر
با استفاده از توابعی مثل SetWindowText و یا با ارسال پیغام با تابع SendMessage از توابع User32 ویندوز و...........................................
روشهای زیادی هست ولی من منظورم در مورد کپی بود که اگر متن درون Textbox برای کاربر اهمیت زیادی داشته باشد میتواند این کار را بکند ولی فکر نمی کنم در مورد paste (در حالت عادی) کسی نیاز به این کار داشته باشد.
بازهم تشکر!
آیا راهی هست بشه جلوی اینا رو هم گرفت؟
کپی هم برام مهمه!

Mahmoud.Afrad
سه شنبه 18 تیر 1392, 20:50 عصر
از سوالت مشخصه که اطلاعات از طرف برنامه به کاربر نشون داده میشه و میخوای این قابلیت ها رو از بین ببری.
اگر اینطوره فکر کنم ساده ترینش اینه که پراپرتی ShortcutsEnable را روی False بزارید. هم شورتکی ها غیر فعال میشن هم راست کلیک موس. علاوه بر این، ReadOnly رو هم True کنید.

مهرداد صفا
سه شنبه 18 تیر 1392, 21:09 عصر
بازهم تشکر!
آیا راهی هست بشه جلوی اینا رو هم گرفت؟
کپی هم برام مهمه!


اگر توضیح بیشتری راجع به جزئیات بدهید بهتر میتوانم راهنمایی کنم.
بستگی به میزان حساسیت کار، مخاطبان (چه گروهی هستند)، نحوه استفاده از textbox (به عنوان ورودی یا خروجی/ چه اطلاعاتی) دارد.

مهرداد صفا
سه شنبه 18 تیر 1392, 21:20 عصر
از سوالت مشخصه که اطلاعات از طرف برنامه به کاربر نشون داده میشه و میخوای این قابلیت ها رو از بین ببری.
اگر اینطوره فکر کنم ساده ترینش اینه که پراپرتی ShortcutsEnable را روی False بزارید. هم شورتکی ها غیر فعال میشن هم راست کلیک موس. علاوه بر این، ReadOnly رو هم True کنید.

البته. ولی در مورد اطلاعات حساس کافی نیستند چون با توابع api کماکان دسترسی به اطلاعات وجود دارد.

tooraj_azizi_1035
سه شنبه 18 تیر 1392, 21:36 عصر
سلام
باید یک TextBox از TextBox ویندوز مشتق کنید و متد WndProc رو Override کنید.:
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_PASTE || m.Msg == WM_COPY || m.Msg == WM_CUT)
{
// ignore input if it was from a keyboard shortcut
// or a Menu command
}
else
{
// handle the windows message normally
base.WndProc(ref m);
}
}

برای کلیدهای ترکیبی:

if(e.KeyCode == Keys.C && e.Control) {
MessageBox.Show("NOT ALLOWED");
}

As for stopping the copy operation, it should be as easy as:

e.SuppressKeyPress = true;

And you can always clear the clipboard using:

Clipboard.Clear();

ashkan1234
سه شنبه 18 تیر 1392, 22:51 عصر
چیز خاصی نیست دوتا تکست باکسه که مربوط به فرم قفل نرم افزار هستش!
سریال هارد رو کریپت کردم و ریختم توش!
همونجوری که جناب افرادگفتند اون خاصیت ها رو ست کردم!ولی خوب دنبال راه مطمین تری هستم!
کدهایی که جناب عزیزی هم قرار دادن رو توی سابت ماکروسافت هم دیده بودم و فکر کنم مطمین ترین راهه!
ولی خوب اگه بازهم قویتر بشه کار کرد بهتره!
تکست باکس دوم هم همونطور که میدونید واسه سریالی هست که کاربر ازم میگیره!
از همگیتون ممنونم...:لبخند: