asp中,例如把一百编文章显示标题,每行分别有编辑和删除按钮,并能分页显示当点击文章标题时能查看文章,按编辑或删除按钮有相应功能那么在C#的winform中如何实现?请给思路或代码,谢谢

解决方案 »

  1.   

    动态创建 label 和 button 控件,然后动态绑定它们的 Click 事件,可以将 button 的 Tag 属性设定一个和文章相关的值,比如文章的 ID。动态调整窗体的高度。分页:还是一样,动态生成 groupBox 之类的容器控件,用一个数组或者 List 存放它们。将范围内的 lable 和 button 控件添加进去。翻页就切换容器的 Visible 属性比如:
    public class Aritcle
    {
        ...
        ...
        public string ID;
        public string Title;
        public string Url;
        public void Edit();
        public void Delete();
        ...
    }public List<Panel> pages = new List<Panel>();private void LoadAritcles()
    {
       Article articles = null;
       // ... 读取文章
       Panel pnl;
       int i;
       foreach(Article article in articles)
       { 
           i++;
           if((i % 20) == 1)
           {   
               pnl = new Panel();
               pnl.Visible = false;
               pnl.Location = new Point(8, 48);
               pages.Add(pnl);
           }
           Label lbl = new Label();
           lbl.Location = new Point(8, 8 + 22 * (i % 20));
           lbl.Size = new Size(100, 22);
           lbl.Text = article.Title;
           Button mdf = new Button();
           mdf.Text = "编辑";
           mdf.Click += new EventHandler(btnModify_Click);
           mdf.Size = new Size(40, 22);
           mdf.Location = new Point(112, 8 + 22 * (i % 20));
           mdf.Tag = article;
           Button del = new Button();
           del.Text = "删除";
           del.Click += new EventHandler(btnDelete_Click);
           del.Size = new Size(40, 22);
           del.Location = new Point(156, 8 + 22 * (i % 20));
           del.Tag = article;
           pnl.Controls.Add(mdf);
           pnl.Controls.Add(del);
           pnl.Controls.Add(lbl);
       }
       pages.Items[0].Visible = true; 
    }private void btnModify_Click(object sender, EventArgs e)
    {
        if(sender is Button)
        {
            Button btn = (Button)sender;
            if(btn.Tag is Article)
              ((Article)btn.Tag).Edit();
        }
    }private void btnDelete_Click(object sender, EventArgs e)
    {
        if(sender is Button)
        {
            Button btn = (Button)sender;
            if(btn.Tag is Article)
              ((Article)btn.Tag).Delete();
        }
    }
      

  2.   

    漏了一行:
           if((i % 20) == 1)
           {   
               pnl = new Panel();
               pnl.Visible = false;
               pnl.Location = new Point(8, 48);
               pages.Add(pnl);
               this.Controls.Add(pnl);   // 将新的容器添加到窗体
           }
      

  3.   

    晕死……你想用 GDI 画标题、按钮上去也可以……不过可能很闪。而且事件相应很慢。ASP.Net 因为某些原因我了解不多,但是 asp.net 生成这么多东西页面也不见得快到哪里去(看别的网站就知道啦,我们学校的选课网即使内部访问也慢死,而且上面只有一个标题)。实例?抱歉,本人还没有工作。你自己先编个小程序生成 100 个 xml 文件,包含里面 Title、Author等信息,内容随机(如 Title 001~ Title 100,Author 001 ~ Author 100 等等),然后设计一个程序显示它们不就可以了?如果你不要求没行有“编辑”和“删除”,你可以将读到的文章添加进 ListView 里,用 Detail 显示方式可以显示文章的很多信息,然后在 ListView 上面或者下面加两个 Button 控件,按下时根据 ListView 中选中的项来打开的文件编辑或者删除,然后再刷新 ListView 也可以。 ListView的分页实现我只能想到分段读取。
      

  4.   

    若你的文章存在数据库中,用datagrid很容易实现.