PDA

View Full Version : سوال: چگونه میشه از تیک زدن توسط کاربر روی نودهای treeview جلوگیری کرد



mohsen_csharp
شنبه 22 آبان 1389, 16:23 عصر
با سلام
فرض کنید یه Treeviiew داریم که نمی خواهیم enabled آن را false کنیم.
نودهای آن نیز به صورت checkBox هستند.
من می خوام کاربر نتونه این نودها رو تیک بزنه یا تیکشونو برداره.
اومدم در رویداد treeView1_BeforeCheck مقدار e.Cancel = true; کردم.
این کد تقریبا کار میکنه فقط در حالت دابل کلیک کار نمی کنه.
حتی من اومدم پس از دابل کلیک مقدار Cheched اون نود رو خوندم جالب اینجاست که در ظاهر تیک خورده ولی مقدار Checked آن برابر false است:متفکر::عصبانی::عصبانی++:
نیازمند راهنمایی شما دوستان هستیم
اینم نمونه برنامه.

M.YasPro
شنبه 22 آبان 1389, 16:38 عصر
سلام


در حالت دابل کلیک کار نمی کنه.

درست کار می کنه
تو دابل کلیک هم false میزنه

mohsen_csharp
شنبه 22 آبان 1389, 16:53 عصر
درست کار می کنه
تو دابل کلیک هم false میزنهکجاش درست کار می کنه ؟؟؟
اول با دابل کلیک ، تیک رو بزن بعد رو باتن کلیک کن ببین که false برمی گردونه در حالی که باید true برگردونه
مشکل اینجاست که تو دابل کلیک اصلا نباید تیک بخوره!!!

M.YasPro
شنبه 22 آبان 1389, 17:10 عصر
مشکل اینجاست که تو دابل کلیک اصلا نباید تیک بخوره!!!

من این کد رو با فرض اینکه باید توی click تکی تیک نخوره و تو DoubleClick تیک بخوره نوشتم :


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool IsDoubleClick = false;
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(treeView1.Nodes[0].Checked.ToString());
}
private void treeView1_BeforeCheck(object sender, TreeViewCancelEventArgs e)
{
if (!IsDoubleClick)
e.Cancel = true;
else
IsDoubleClick = false;

}

private void treeView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
IsDoubleClick = true;
}

}

mohsen_csharp
شنبه 22 آبان 1389, 17:17 عصر
من می خوام که در هیچ صورتی تیک نخوره چه با تک کلیک و چه با دابل کلیک و چه با کی بورد

M.YasPro
شنبه 22 آبان 1389, 17:44 عصر
با همون کد خودتون که تیک نمی خورد!!!!!!


private void treeView1_BeforeCheck(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = true;
}

mohsen_csharp
شنبه 22 آبان 1389, 18:12 عصر
با همون کد خودتون که تیک نمی خورد!!!!!!
تعجب من هم از همینه.
با کدی که من نوشتم نباید تیک بخوره ولی تو عکسی که گذاشتم مشخصه که تیک خورده البته با دابل کلیک روی checkBox همون نود

میلاد قاضی پور
شنبه 22 آبان 1389, 19:18 عصر
سلام مهندس. من برنامه رو دانلود کردم و امتحان کردم . هرچقدر هم دابل کلیک کردم اصلا تیک نخورد . درست بود .

mohsen_csharp
شنبه 22 آبان 1389, 19:51 عصر
سلام مهندس. من برنامه رو دانلود کردم و امتحان کردم . هرچقدر هم دابل کلیک کردم اصلا تیک نخورد . درست بود .
با سلام.
پس چرا تو سیستم من با دابل کلیک روی CheckBox تیک می خوره یعنی مشکل از ویستا هست؟؟؟!!!!
از دوستان لطف کنن تو ویستا این برنامه رو تست کنن ببینیم که مشکل واقعا از ویستا هست؟

mahdi87_gh
شنبه 22 آبان 1389, 21:19 عصر
نباید تیک بخوره!!
میخوای توی َAfterCheck دوباره false کن.

mohsen_csharp
شنبه 22 آبان 1389, 21:48 عصر
مشکل اینه که هنگام دابل کلیک اصلا رویدادهای beforCheck و afterCheck اجرا نمیشن ولی تیک می خوره!!!

mahdi87_gh
شنبه 22 آبان 1389, 21:54 عصر
مشکل اینه که هنگام دابل کلیک اصلا رویدادهای beforCheck و afterCheck اجرا نمیشن !!!
اگه اصلا اجرا نمیشن شما یه نگاه بکن توی رویدادهای Treeview ببین شاید رویدادها attach نشدن

mohsen_csharp
شنبه 22 آبان 1389, 22:10 عصر
اتچ شدن چون این رویدادهای beforCheck و afterCheck در هنگام تک کلیک اجرا میشن ولی هنگام دابل کلیک اجرا نمی شن.البته چون رویداد beforeCheck رو هندل کردم دیگه رویداد afterCheck اجرا نمیشه. و بازهم چون رویداد beforeCheck رو هندل کردم هنگام دابل کلیک دیگه هیچ کدوم اجرا نمی شه.
فکر کنم حتما یکی که ویستا داره باید تستش کنه ببینه اینجوری هست یا نه

mahdi87_gh
شنبه 22 آبان 1389, 22:34 عصر
من ویستا دارم. الان تست میکنم خبر میدم

mahdi87_gh
شنبه 22 آبان 1389, 22:39 عصر
حق با شماست!!!!!!
در ویندوز ویستا با دوبار کلیک تیک میخوره:متفکر:

mohsen_csharp
شنبه 22 آبان 1389, 22:46 عصر
حق با شماست!!!!!!
در ویندوز ویستا با دوبار کلیک تیک میخوره:متفکر:
به نظر شما برای رفع این مشکل چی کار میشه کرد؟؟؟
:عصبانی++::متعجب::ناراحت:
جالب اینجاست که در ظاهر تیک می خوره و اگه مقدارشو بخونیم ، false برمی گردونه

mahdi87_gh
شنبه 22 آبان 1389, 23:04 عصر
منم یکم باهاش سروکله زدم اما ....:عصبانی++:

mohsen_csharp
یک شنبه 23 آبان 1389, 19:32 عصر
ظاهرا این تایپیک هم به نتیجه نرسید!!! :افسرده: