PDA

View Full Version : انتقال نود انتخاب شده در TreeView در فرم قبل



HAMRAHSOFT.IR
چهارشنبه 18 اسفند 1389, 15:57 عصر
سلام
دوستان چطوري متونم در مثال زير بعد از انتخاب هريد از ايتم هاي TreeView فرم TreeView بسته شده مقدار اون در فرم قبل نماش داده بشه

هم آدي و هم اسم اون

ali.rezaei7
چهارشنبه 18 اسفند 1389, 17:12 عصر
سلام. فرم قرار بصورت ديالوگ باز بشه و اين كار رو راحت مي كنه.
شما يك متغير با Scope عمومي در فرم Treeview ايجاد كنيد و مقدار Node انتخاب شده در كنترل رو به متغير ارسال كنيد.

دستورات زير رو هم در Form1 بنويسيد.
Frm_TreeView frmTreeView=new Frm_TreeView();
frmTreeView.ShowDialog();
textBox1.Text = frmTreeView.value;


در مثال بالا عبارت value نام متغيير عمومي هست كه مقدار node بعد از انتخاب شدن داخل اون قرار مي گيره. متغير value در Frm_TreeView بصورت زير تعريف ميشه:
public partial class Frm_TreeView : Form
{
public string value;

public Frm_TreeView()
{
InitializeComponent();
.
.
.

}

exlord
چهارشنبه 18 اسفند 1389, 22:23 عصر
Frm_TreeView :
2 تا button اضافه کن ... btnOk , btnCancel
btnOk.DialogResult = DialogResult.OK;
btnCancel.DialogResult = DialogResult.Cancel;
یه متد static اضافه کن :
public static TreeNode GetNode()
{
Frm_TreeView f = new Frm_TreeView();
if (f.ShowDialog() == DialogResult.OK)
return f.CheckedNode;
else return null;
}

تو فرم اصلی ...
private void button1_Click(object sender, EventArgs e)
{
TreeNode t = Frm_TreeView.GetNode();
if(t!= null)
//do your thing
}
}

HAMRAHSOFT.IR
پنج شنبه 19 اسفند 1389, 21:48 عصر
ممنون دوستان امتحان کردم جواب نداد ممکن فابل پیوست برام اصلاح کنید؟

ali.rezaei7
جمعه 20 اسفند 1389, 00:05 صبح
ممنون دوستان امتحان کردم جواب نداد ممکن فابل پیوست برام اصلاح کنید؟
كدتون رو باتوجه به توضيحاتي كه دادم، اصلاح كردم.

HAMRAHSOFT.IR
جمعه 20 اسفند 1389, 08:19 صبح
تشکر فراوان از شما
دوست خوی در قسمت this.NodeValue = SelNode.Text; مشخس میشه کدوم نود انتخاب شده؟
ایا میشه عدد مربوط به هر نود بدست اورد برای ذخیر دردیتا بیس استفاده کرد یا خیر

ali.rezaei7
جمعه 20 اسفند 1389, 10:34 صبح
مشخس میشه کدوم نود انتخاب شده؟
سلام. Node انتخاب شده در e.Node قرار مي گيره. شما مي تونيد e.node برگردونيد تا به تمامي خصيصه هاي node انتخاب شده در Form1 دسترسي داشته باشيد.


ایا میشه عدد مربوط به هر نود بدست اورد برای ذخیر دردیتا بیس استفاده کرد یا خیر
اگر منظورتون شماره انديس Node انتخاب شده است، مي تونيد بصورت زير اون رو بدست بياريد:
TreeNode SelNode = e.Node;

if (SelNode.Checked)
{
NodeValue = SelNode.Index.ToString();
this.Close();
}

كد بالا شماره انديس انتخاب شده رو به جاي Text بر مي گردونه. البته اين انديس نسبت به Parent اون Node مشخص مي شه. به اين صورت كه هميشه اولين Child Node انديس صفر مي گيره، دومين انديس يك،... . اگه شما نياز داريد كه شماره انديس نسبت به root باشه در اين صورت بايد يك الگوريتم كوچيك بنويسيد:
TreeNode SelNode = e.Node;

if (SelNode.Checked)
{
int nodeindex = SelNode.Index;
while (null != (SelNode = SelNode.Parent))
{
nodeindex += SelNode.Index + 1;
}
this.NodeValue = nodeindex.ToString();
this.Close();
}