在ASP中实现很简单,在C# winform中如何实现这样的功能? asp中,例如把一百编文章显示标题,每行分别有编辑和删除按钮,并能分页显示当点击文章标题时能查看文章,按编辑或删除按钮有相应功能那么在C#的winform中如何实现?请给思路或代码,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 动态创建 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(); }} 漏了一行: if((i % 20) == 1) { pnl = new Panel(); pnl.Visible = false; pnl.Location = new Point(8, 48); pages.Add(pnl); this.Controls.Add(pnl); // 将新的容器添加到窗体 } 晕死……你想用 GDI 画标题、按钮上去也可以……不过可能很闪。而且事件相应很慢。ASP.Net 因为某些原因我了解不多,但是 asp.net 生成这么多东西页面也不见得快到哪里去(看别的网站就知道啦,我们学校的选课网即使内部访问也慢死,而且上面只有一个标题)。实例?抱歉,本人还没有工作。你自己先编个小程序生成 100 个 xml 文件,包含里面 Title、Author等信息,内容随机(如 Title 001~ Title 100,Author 001 ~ Author 100 等等),然后设计一个程序显示它们不就可以了?如果你不要求没行有“编辑”和“删除”,你可以将读到的文章添加进 ListView 里,用 Detail 显示方式可以显示文章的很多信息,然后在 ListView 上面或者下面加两个 Button 控件,按下时根据 ListView 中选中的项来打开的文件编辑或者删除,然后再刷新 ListView 也可以。 ListView的分页实现我只能想到分段读取。 若你的文章存在数据库中,用datagrid很容易实现. 大家说说 Windows API是什么?? 一堆随机生成的数然后去重复... Thread.Suspend() 回释放资源吗? 早期的鸟儿有虫吃,哈哈,快来抢分吧 關於DataGrid中的CheckBox的問題(WinForm) 关于在 .NET的Project中中导入vc6.0写的dll文件 控件数组的使用 webservice调用过程中出现异常 xsd当中自定义了一个attribute类型,结果没有通过验证 跪求.net framwork 2.0 用C#生成HTML文件的问题 asp架构的网站升级到php还是升级到asp.net的选择
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();
}
}
if((i % 20) == 1)
{
pnl = new Panel();
pnl.Visible = false;
pnl.Location = new Point(8, 48);
pages.Add(pnl);
this.Controls.Add(pnl); // 将新的容器添加到窗体
}