|
hmmm what would help? reading a book? maybe about c#?
|
|
|
|
|
Im trying to learn how to attach a file to the form..The idea
is, the user can not only add a record but will also be able to add an
attachment for that particular record....lets say I would like to add
an excel or word doc...this has nothing to do with sending attachments
and emails and stuff like that...just attaching a file to the form...
plz help!
|
|
|
|
|
You may use the DataGridViewImageColumn to add a small picture and write a delegate to open a file you wish to open, when the picture is clicked.
Otherwise physically attaching a file is only valid in e-mail and other messaging services...
Have a Happy Coding.....
|
|
|
|
|
Hi
I am using this code to list the files in ListView control.When i try to add the files to the listview control using
listView1.Items.Add(fil2.ToString());
it gives me only one file i.e the last file in the folder.What change should i do to list all the files in that folder?Please help me with this
amespace WindowsApplication30
{
public partial class Form1 : Form
{
XmlTextReader reader;
XmlDocument doc = new XmlDocument();
ColumnHeader colHead;
String sss = "";
public Form1()
{
InitializeComponent();
}
private void ListDrives_Click(object sender, EventArgs e)
{
string[] drives = Environment.GetLogicalDrives();
foreach (string strDrive in drives)
{
listBox1.Items.Add(strDrive.ToString());
}
}
private void ShowPath_Click(object sender, EventArgs e)
{
CreateHeadersAndFillListView();
PaintList(sss);
}
private void CreateHeadersAndFillListView()
{
colHead = new ColumnHeader();
colHead.Text = "Servers";
colHead.Width = 200;
listView1.Columns.Add(colHead);
colHead = new ColumnHeader();
colHead.Text = "Status";
colHead.Width = 100;
listView1.Columns.Add(colHead);
colHead = new ColumnHeader();
colHead.Text = "Last accessed";
colHead.Width = 100;
listView1.Columns.Add(colHead);
}
private void PaintList(String sss)
{
try
{
reader = new XmlTextReader("path.xml");
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Text:
String s1;
s1 = reader.Value;
String ss;
ss = listBox1.SelectedItem.ToString();
sss = ss + s1;
object o3 = (object)sss;
DirectoryInfo dire = new DirectoryInfo(sss);
if (dire.Exists)
{
String[] folder;
folder = Directory.GetDirectories(sss);
foreach (string foldername in folder)
{
DirectoryInfo di = new DirectoryInfo(foldername);
if (di.Exists)
{
String[] files;
files = Directory.GetFiles(foldername);
listView1.Items.Clear();
foreach (String filename in files)
{
FileInfo fil2 = new FileInfo(filename);
listView1.Items.Add(fil2.ToString());
}}}}
break;}}
}
catch (System.Exception err)
{
MessageBox.Show("Error: " + err.Message);
} }} }
|
|
|
|
|
What happens when you step through the code ?
Christian Graus
Driven to the arms of OSX by Vista.
|
|
|
|
|
Hi
fil2 contains the list of all the files.If i use listBox.Items.Add(fil2.Tostring()); it dis[plays the list of files in the listbox.But i want to display in the listview control.I have added column headers to the listview control.I want to display the names of the files under the header named "Servers".
foreach (String filename in files)
{
FileInfo fil2 = new FileInfo(filename);
foreach (String sfil in fil2)
{
listView1.Items.Add(sfil);
}
This gives me name of only the last file in that folder.
|
|
|
|
|
To add an item in ListView control you should supply the listitem.
This may work....
Modify your code like this and try....
foreach (String filename in files)
{
FileInfo fil2 = new FileInfo(filename);
foreach (String sfil in fil2)
{
ListViewItem listitem = new ListViewItem();
listitem.SubItems.Add(sfil);
listView1.Items.Add(listitem);
}
}
Have a Happy Coding.....
|
|
|
|
|
Hi
Thanks for the reply.i tried with this, but it shows me an error for the line
foreach (String sfil in fil2) saying that the foreach cannot be applied to FileInfo.So i tried without the foreach
foreach (String filename in files)
{
FileInfo fil2 = new FileInfo(filename);
lvi = new ListViewItem();
lvi.Text = filename.ToString();
listView1.Items.Add(lvi);}
In any way im getting only the last file in the folder.The following gets the files from the folder.I do not know how to display it in the listview control.
DirectoryInfo di = new DirectoryInfo(foldername);
if (di.Exists)
{
String[] files;
files = Directory.GetFiles(foldername);
|
|
|
|
|
Hi mrithula....
I have personally checked the below code and its working properly in my machine....
DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);
if (di.Exists)
{
String[] files;
files = Directory.GetFiles(fbd.SelectedPath);
foreach (string file in files)
{
ListViewItem lvi = new ListViewItem();
lvi.Text = file;
lvi.ImageIndex = 0;
listView1.Items.Add(lvi);
}
}
If it shows any error let me know....
Have a Happy Coding.....
|
|
|
|
|
Hi
Thank you.Im getting it right now
|
|
|
|
|
"Ella Pugazhum iraivan oruvanukkae"
Have a Happy Coding.....
|
|
|
|
|
Hi
I am able to list all the exe files in listView control.If the 1st exe has started i want to set the status of the ist sub item to "Started"
foreach(Process pr in proclist)
{
String proname = pr.ProcessName;
lvsi=new ListViewItem.ListViewSubItem();
lvsi.Text="Started...";
lvi.SubItems.Add(lvsi);
}
int b = proclist.Count;
listBox4.Items.Add(b.ToString());
proclist contains the list of all exe that have started.Currently there is only 1 exe(i.e the 1st one in the listview control).I want to display started to the 1st subitem.The above code that im using displays "started" as the last sub item.How can i change this?
|
|
|
|
|
when you add the subitem for an item in the listview the sequence starts always from left to right.
Not sure what mistake you are doing.
But you can try this...
To add the subitem, for the STATUS column header, use the same item object which you used to add to the listview control.
i.e.
if item 1 in the Server header is added by using lvi then,
ListviewItem lvi = new ListViewItem();
lvi.SubItem.Add("Started");
ListView.Items.Add(lvi);
This should work i believe.
Have a Happy Coding.....
|
|
|
|
|
Hi
I tried with this but it displays "Started.." as a subitem for the last item in listview control.I used this code in the button click event of "Start" button which starts the exe file.
|
|
|
|
|
okay.....
then you may try the SubItem index property, to directly specify which subitem to modify.
for example,
if you want to change the status of the first server Item, then
ServerItem1.SubItems[1].text = "Started";
Have a Happy Coding.....
|
|
|
|
|
Hi
I tried with this.Is this right?Nothing gets displayed when the exe starts.
int g = lvi.Index;
lvi = new ListViewItem();
if (g == 1)
lvi.SubItems[1].Text = "Started..";
listView1.Items.Add(lvi);
|
|
|
|
|
no this will not work. because you are creating a new lvi.
Have a Happy Coding.....
|
|
|
|
|
Hi
Can you please tell why it adds "started.." as a sub item for last item?Why does it not display it as the sub item for the 1st item?
|
|
|
|
|
Not sure what's the problem....
but instead of this
foreach(Process pr in proclist)
{
String proname = pr.ProcessName;
lvsi=new ListViewItem.ListViewSubItem();
lvsi.Text="Started...";
lvi.SubItems.Add(lvsi);
}
try this
foreach(Process pr in proclist)
{
String proname = pr.ProcessName;
//listBox4.Items.Add(proname);
lvi.SubItems[1].Text = "started";
}
Make it sure that you are executing this code after adding the item to the list view... otherwise you may get an exception in the blocked line.
Have a Happy Coding.....
|
|
|
|
|
Hi
It tells that 1 is not valid argument index.
|
|
|
|
|
how many column headers you have???
because the subitems index always starts from 0.
can you post the entire code block of the listcontrol??? if possible...
Have a Happy Coding.....
|
|
|
|
|
Hi
I have created 3 column headers
private void CreateHeadersAndFillListView()
{
colHead = new ColumnHeader();
colHead.Text = "Servers";
colHead.Width = 250;
listView1.Columns.Add(colHead);
colHead = new ColumnHeader();
colHead.Text = "Status";
colHead.Width = 100;
listView1.Columns.Add(colHead);
colHead = new ColumnHeader();
colHead.Text = "Last accessed";
colHead.Width = 100;
listView1.Columns.Add(colHead);
}
private void PaintList(String sss)
{
try
{
reader = new XmlTextReader("path.xml");
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Text:
String s1;
s1 = reader.Value;
String ss;
ss = listBox4.SelectedItem.ToString();
sss = ss + s1;
object o3 = (object)sss;
DirectoryInfo dire = new DirectoryInfo(sss);
if (dire.Exists)
{
String[] folder;
folder = Directory.GetDirectories(sss);
foreach (string foldername in folder)
{
DirectoryInfo di = new DirectoryInfo(foldername);
if (di.Exists)
{
String[] files;
files = Directory.GetFiles(foldername,"*.exe*");
foreach (String filename in files)
{
lvi = new ListViewItem();
lvi.Text = filename;
listView1.Items.Add(lvi);
}
this.Controls.Add(listView1);
}
}
}
break;
}
}
}
catch (System.Exception err)
{
MessageBox.Show("Error: " + err.Message);
}
}
private void Start_Click(object sender, EventArgs e)
{
String n2, n1, n3, n4;
n1 = lb4.Text;
n2 = lb5.Text;
n3 = lb6.Text;
n4 = lb7.Text;
ProcessStartInfo si1;
if (cb.Checked)
{
n1 = lb4.Text;
si1 = new ProcessStartInfo(n1);
proc = Process.Start(si1);
proclist.Add(proc);
}
if (cb1.Checked)
{
n2 = lb5.Text;
ProcessStartInfo si2 = new ProcessStartInfo(n2);
proc = Process.Start(si2);
proclist.Add(proc);
} foreach(Process pr in proclist)
{
ListViewItem.ListViewSubItem lvsi = new ListViewItem.ListViewSubItem();
lvsi.
lvsi.Text = "Started..";
lvi.SubItems.Add(lvsi);
}
|
|
|
|
|
Hi,
If i add subitem like the following it just gives the subitem "Started" corresponding to every item in listview.But what i require is that when the server starts it must display the subitem "Started.." to the corresponding item (server) that has started.
DirectoryInfo di = new DirectoryInfo(foldername);
if (di.Exists)
{
String[] files;
files = Directory.GetFiles(foldername,"*.exe*");
foreach (String filename in files)
{
lvi = new ListViewItem();
lvi.Text = filename;
listView1.Items.Add(lvi);
lvi = new ListViewItem();
lvi.SubItems.Add("Started..");
listView1.Items.Add(lvi);
}
this.Controls.Add(listView1);
|
|
|
|
|
So you finally got that....!!! Hail Hurray!!!
If you want to show the status dynamically, then you need to go for threading.....
Dedicate a thread specifically for updates and things will work...
Have a Happy Coding.....
|
|
|
|
|
Hi
I tried with the following code. It displays "Started" as a subitem for the 2nd item in listview control
lvsi = new ListViewItem.ListViewSubItem();
lvsi.Text = "Started..";
listView1.Items[1].SubItems.Insert(1, lvsi);
If i use
listView1.Items[0].SubItems.Insert(0, lvsi);
it displys "started " as an item and not a subitem like
Server status Last accessed
started
Server1.exe
...
....
Can you give me some suggestions
|
|
|
|