none
c#问题 新手求助 RRS feed

  • 问题

  • form3 private void listView_DoubleClick(object sender, EventArgs e)
            {
              
                Form3 form = new Form3(this);
                form.ShowDialog();
    
    
                if (listView.SelectedItems.Count == 1)
                {
                    form.Img = Image.FromFile(listView.SelectedItems[0].Name);
                }
                form.Name = listView.SelectedItems[0].Tag.ToString();
    
    
    
    
    
            }
    
    
    
    

    我想知道

    1.就是在opendialog 添加图片的时候 ,怎么让图片保存在那 添加在别的图片后面

    我现在只能插入图片 老是只有一张

    private void button3_Click(object sender, EventArgs e)
            {
                openFileDialog.Multiselect = true;
                openFileDialog.InitialDirectory = "c:\\";
                openFileDialog.Filter = "图像文件(*.jpg)|*.jpg";
                openFileDialog.Title = "文件浏览";
                DialogResult dr = openFileDialog.ShowDialog();
    
    
                if (dr == System.Windows.Forms.DialogResult.OK)
                {
                    // Read the files
    
                //    listView.Items.Clear();
                    ImageList fileImage = new ImageList();
                    string file = openFileDialog.FileName;
    
    
                    fileImage.ColorDepth = ColorDepth.Depth32Bit;
                    listView.LargeImageList = fileImage;
                    listView.LargeImageList.ImageSize = new Size(100, 100);
    
    
                    ListViewItem item = new ListViewItem();
                    fileImage.Images.Add(Image.FromFile(file));
                    //  fileImage.Images.Add(Image.FromFile(file.FullName));
                    item.Text = Path.GetFileNameWithoutExtension(file);
                    item.ImageIndex = fileImage.Images.Count - 1;
                    item.Tag = file;
                    listView.Items.Insert(item.Index,item.Tag.ToString());
                    //int itemnum = this.listView.Items.Count;
               
                    //this.listView.Items[itemnum].ImageIndex = item.ImageIndex;
    
    
                }
                else
                {
                    return;
                }
    
            }

    2.就是我form3里面 的picturebox怎么老不能显示我双击listview里面的图片 还有textbox里面显示错误图片的路径

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Texture_1
    {
        public partial class Form3 : Form
        {
            private 特别的 form;
            private Image img;
            private string name;
            public PictureBox pb = new PictureBox();
    
            public Image Img
            {
                set { this.img = value; }
                get { return this.img; }
            }
    
            public string Name
            {
                set { this.name = value; }
                get { return this.name; }
            }
    
    
    
    
            public Form3(特别的 from)
            {
                InitializeComponent();
                this.form = form;
            }
    
            private void Form3_Load(object sender, EventArgs e)
            {
                pictureBox.Image = img;
                textBox.Text = name;
            }
        }
    }
    

    3.右键的重命名 使得文件也重命名那里

    我的实现报错:代码如图

    private void 重命名ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                //菜单的重命名
    
          
                treeView.SelectedNode.BeginEdit();
    
                treeView.SelectedNode.EndEdit(true);
                string text = treeView.SelectedNode.Tag.ToString();
                string text1 = text.Substring(text.LastIndexOf(@"\") + 1);
    
                string text2 = treeView.SelectedNode.Text;
                File.Move(text, text.Substring(0, text.Length - text1.Length) + text2);
    
     
            }

    2012年8月14日 7:31

答案

  • 看你调用Form3的代码:

    Form3 form = new Form3(this);
    form.ShowDialog();
    
    
    if (listView.SelectedItems.Count == 1)
    {
         form.Img = Image.FromFile(listView.SelectedItems[0].Name);
    }
    form.Name = listView.SelectedItems[0].Tag.ToString();
    
    注意代码行第二行,你先ShowDialog,还是模态窗口,那么它下面的代码只可能在该子窗口关闭后才会被执行。你只需把form.ShowDialog();移至最后即可。
    2012年8月16日 2:50
  • 另外,保存图片的问题,看代码:
    private void button3_Click(object sender, EventArgs e)
            {
                openFileDialog.Multiselect = true;
                openFileDialog.InitialDirectory = "c:\\";
                openFileDialog.Filter = "图像文件(*.jpg)|*.jpg";
                openFileDialog.Title = "文件浏览";
                DialogResult dr = openFileDialog.ShowDialog();
    
    
                if (dr == System.Windows.Forms.DialogResult.OK)
                {
                    // Read the files
    
                //    listView.Items.Clear();
                    ImageList fileImage = new ImageList();
                    string file = openFileDialog.FileName;
    
    
                    fileImage.ColorDepth = ColorDepth.Depth32Bit;
                    listView.LargeImageList = fileImage;
                    listView.LargeImageList.ImageSize = new Size(100, 100);
    
    
                    ListViewItem item = new ListViewItem();
                    fileImage.Images.Add(Image.FromFile(file));
                    //  fileImage.Images.Add(Image.FromFile(file.FullName));
                    item.Text = Path.GetFileNameWithoutExtension(file);
                    item.ImageIndex = fileImage.Images.Count - 1;
                    item.Tag = file;
                    listView.Items.Insert(item.Index,item.Tag.ToString());
                    //int itemnum = this.listView.Items.Count;
               
                    //this.listView.Items[itemnum].ImageIndex = item.ImageIndex;
    
    
                }
                else
                {
                    return;
                }
    
            }

    你每次都是重新定义一个ImageList ,这等于以前的全被你清空掉了,listView.LargeImageList始终只有一张图片。你应该将ImageList 定义成该类的全局变量,在构造函数里初始化,每次添加图片即可。
    2012年8月16日 2:56

全部回复

  • 你好,

    >>就是在opendialog 添加图片的时候 ,怎么让图片保存在那 添加在别的图片后面

    如果你是直接设置picturebox的image属性的话,它的确只能显示一张图片,如果你想显示两张或多张的话,那么你得自己画。

    >>就是我form3里面 的picturebox怎么老不能显示我双击listview里面的图片 还有textbox里面显示错误图片的路径

    你应该设置的是picturebox控件的image属性,而不是

    form.Img = Image.FromFile(listView.SelectedItems[0].Name);

    >>右键的重命名 使得文件也重命名那里

    不明白你说的。


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年8月15日 8:01
    版主
  • 看你调用Form3的代码:

    Form3 form = new Form3(this);
    form.ShowDialog();
    
    
    if (listView.SelectedItems.Count == 1)
    {
         form.Img = Image.FromFile(listView.SelectedItems[0].Name);
    }
    form.Name = listView.SelectedItems[0].Tag.ToString();
    
    注意代码行第二行,你先ShowDialog,还是模态窗口,那么它下面的代码只可能在该子窗口关闭后才会被执行。你只需把form.ShowDialog();移至最后即可。
    2012年8月16日 2:50
  • 另外,保存图片的问题,看代码:
    private void button3_Click(object sender, EventArgs e)
            {
                openFileDialog.Multiselect = true;
                openFileDialog.InitialDirectory = "c:\\";
                openFileDialog.Filter = "图像文件(*.jpg)|*.jpg";
                openFileDialog.Title = "文件浏览";
                DialogResult dr = openFileDialog.ShowDialog();
    
    
                if (dr == System.Windows.Forms.DialogResult.OK)
                {
                    // Read the files
    
                //    listView.Items.Clear();
                    ImageList fileImage = new ImageList();
                    string file = openFileDialog.FileName;
    
    
                    fileImage.ColorDepth = ColorDepth.Depth32Bit;
                    listView.LargeImageList = fileImage;
                    listView.LargeImageList.ImageSize = new Size(100, 100);
    
    
                    ListViewItem item = new ListViewItem();
                    fileImage.Images.Add(Image.FromFile(file));
                    //  fileImage.Images.Add(Image.FromFile(file.FullName));
                    item.Text = Path.GetFileNameWithoutExtension(file);
                    item.ImageIndex = fileImage.Images.Count - 1;
                    item.Tag = file;
                    listView.Items.Insert(item.Index,item.Tag.ToString());
                    //int itemnum = this.listView.Items.Count;
               
                    //this.listView.Items[itemnum].ImageIndex = item.ImageIndex;
    
    
                }
                else
                {
                    return;
                }
    
            }

    你每次都是重新定义一个ImageList ,这等于以前的全被你清空掉了,listView.LargeImageList始终只有一张图片。你应该将ImageList 定义成该类的全局变量,在构造函数里初始化,每次添加图片即可。
    2012年8月16日 2:56
  • 第三个问题报什么错?
    2012年8月16日 3:00