怎样从数据库里动态读取数据记录作为contextMenu1的下拉菜单来链接相应的页面(vs2003 winform)

zk911 2007-06-04 09:43:17
怎样从数据库里动态读取数据记录作为contextMenu1的下拉菜单来链接相应的页面.请各位高手帮助一下,不够还可以加分,很急!很急!

我用的vs2003 winform
...全文
488 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
zk911 2007-06-13
  • 打赏
  • 举报
回复
一个button,右边紧挨者再加一个有个三角形标记的小按钮,小按钮单击时弹出菜单,主按钮单击时做另外的事情

这样的按钮怎么做

谢谢
killer_liqiao 2007-06-13
  • 打赏
  • 举报
回复
学习
sowenxiong 2007-06-13
  • 打赏
  • 举报
回复
关键是你没有把问题表达清楚。
定义一个类
public class myButt : Button
{
public myButt()
{
///写添加另一个butt按钮的代码
Button btn = new Button();
btn.Size = new Size(18, 18);
btn.Location = new Point(this.button1.Width - btn.Width, this.button1.Height - btn.Height);
btn.Text = "6";
btn.FlatStyle = FlatStyle.Popup;
btn.Font = new Font("Marlett", 9);
btn.Click += new EventHandler(btn_Click);
this.Controls.Add(btn);
btn.Visible = true;
}

void btn_Click(object sender, EventArgs e)
{
ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("aa", new EventHandler(this.menu_Click));
cm.MenuItems.Add("bb", new EventHandler(this.menu_Click));
cm.Show(this, this.PointToClient(Control.MousePosition));
}
private void menu_Click(object sender, EventArgs e)
{
MenuItem item = (MenuItem)sender;
Console.WriteLine(item.Text);
}
}

然后用这个类就行了。
zk911 2007-06-13
  • 打赏
  • 举报
回复
自己顶!

请道上的朋友帮忙看一下

小弟不胜感激
sowenxiong 2007-06-08
  • 打赏
  • 举报
回复
本来就是两个按钮嘛!
btn.Click += new EventHandler(btn_Click);
button1.Click += new EventHandler(button1_Click);
都有各自的事件方法啊!
zk911 2007-06-08
  • 打赏
  • 举报
回复
谁能帮忙解决一下 谢谢
zk911 2007-06-07
  • 打赏
  • 举报
回复
谢谢朋友们 已经知道怎么解决了

谢谢 谢谢


还有一个问题:
Button btn = new Button();
btn.Size = new Size(18, 18);
btn.Location = new Point(this.button1.Width - btn.Width, this.button1.Height - btn.Height);
btn.Text = "6";
btn.FlatStyle = FlatStyle.Popup;
btn.Font = new Font("Marlett", 9);
btn.Click += new EventHandler(btn_Click);
this.button1.Controls.Add(btn);
btn.Visible = true;

void btn_Click(object sender, EventArgs e)
{
ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("aa", new EventHandler(this.menu_Click));
cm.MenuItems.Add("bb", new EventHandler(this.menu_Click));
cm.Show(this, this.PointToClient(Control.MousePosition));
}
private void menu_Click(object sender, EventArgs e)
{
MenuItem item = (MenuItem)sender;
Console.WriteLine(item.Text);
}

但有一个问题 就是当点击按钮(btn)和小三角的时候都会弹出相同的菜单(contextMenu1)
这段代码是在按钮上再添加一个小三角

我想让单击按钮的时候完成一个事件
单击小三角的时候完成另一个事件

如何区分我每次点击的是按钮还是小三角呢


谢谢

randb 2007-06-06
  • 打赏
  • 举报
回复
这个应该不难吧,从数据库读取记录,然后往MENU里面添加ITEM不就得了

--------------------------------------------------------------------------------
专注于自动提交,如发贴机资源采集器等网络营销软件的开发及相关领域如验证码识别技术。
QQ群号:24733057
jlzan1314 2007-06-06
  • 打赏
  • 举报
回复
我觉得,你看vs怎么样生成菜单代码的,自己可以理解一下。
sdr是SqlDataReader

MenuItem menuItem;
while (sdr.Read())
{
menuItem = new MenuItem();
menuItem.Text = sdr里相应字段的值;
m.MenuItems.Add(menuItem);
}
这个可以理解一下,,没用到什么复杂的技术。
zk911 2007-06-06
  • 打赏
  • 举报
回复
添加三角的代码如下:
Button btn = new Button();
btn.Size = new Size(18, 18);
btn.Location = new Point(this.button1.Width - btn.Width, this.button1.Height - btn.Height);
btn.Text = "6";
btn.FlatStyle = FlatStyle.Popup;
btn.Font = new Font("Marlett", 9);
btn.Click += new EventHandler(btn_Click);
this.button1.Controls.Add(btn);
btn.Visible = true;

void btn_Click(object sender, EventArgs e)
{
ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("aa", new EventHandler(this.menu_Click));
cm.MenuItems.Add("bb", new EventHandler(this.menu_Click));
cm.Show(this, this.PointToClient(Control.MousePosition));
}
private void menu_Click(object sender, EventArgs e)
{
MenuItem item = (MenuItem)sender;
Console.WriteLine(item.Text);
}



还有一个问题 就是当点击按钮(btn)和小三角的时候都会弹出相同的菜单(contextMenu1)
我想让单击按钮的时候完成一个事件
单击小三角的时候完成另一个事件

如何区分我每次点击的是按钮还是小三角呢


请路人指点一下


谢谢
zk911 2007-06-05
  • 打赏
  • 举报
回复
如何在按钮中加一个有三角形标记图片的小按钮呢

恩 我的意思就是像,《imwjb》所说的
chenli133 2007-06-04
  • 打赏
  • 举报
回复
public void LoadMenuBase(MenuItem mItem)
{
DataView dv=ds.Tables[0].DefaultView;
for(int intNum=0;intNum<=dv.Count-1;intNum++)
{
MenuItem item=new MenuItem();
item.Text=dv[intNum]["sBaseName"].ToString();
item.Click+=new EventHandler(BaseItem_Click);
mItem.MenuItems.Add(item);
htState.Add(item.Index,dv[intNum]["sBaseCode"]);
}

}
神奇的章鱼哥 2007-06-04
  • 打赏
  • 举报
回复
很简单啊:

sdr是SqlDataReader

MenuItem menuItem;
while (sdr.Read())
{
menuItem = new MenuItem();
menuItem.Text = sdr里相应字段的值;
m.MenuItems.Add(menuItem);
}
zk911 2007-06-04
  • 打赏
  • 举报
回复
using System;
using System.Windows.Forms;
using System.Drawing;

class useonpaint:Form
{
public useonpaint()
{;}

static void Main()
{
Application.Run(new useonpaint());
}

protected override void OnMouseUp(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left) test(e);

}
private void test(MouseEventArgs e)
{
ContextMenu m = new ContextMenu();
this.ContextMenu= m;

// Create MenuItem objects.
MenuItem menuItem1 = new MenuItem();
MenuItem menuItem2 = new MenuItem();

// Set the Text property.
menuItem1.Text = "New";
menuItem2.Text = "Open";

// Add menu items to the MenuItems collection.
m.MenuItems.Add(menuItem1);
m.MenuItems.Add(menuItem2);


Point position = new Point(e.X, e.Y);
m.Show(this,position);
}
}


这是上午写的一段静态生成菜单的方法 ,有兴趣的朋友可以看一看 但动态的如何生成呢
如何把数据库里的记录一个一个填充到contextMenu1里面呢?

请路过的朋友多给一点宝贵的意见

谢谢!!!
zk911 2007-06-04
  • 打赏
  • 举报
回复
思路我明白
我刚学习c#不久 对有些地方的语法还不是很熟 最好附上一小段代码

不过还是谢谢路过的朋友提出的思路


“读取内容”后如何实现“动态生成菜单项”呢?
leixueqiyi 2007-06-04
  • 打赏
  • 举报
回复
读取内容——动态生成菜单项——注册菜单click事件——加入contextMenu1
给你的思路,代码不好办
神奇的章鱼哥 2007-06-04
  • 打赏
  • 举报
回复
注册菜单事件里可以写一个统一的方法,传进去form名称做为参数,在这个方法里链接参数指向的名称
神奇的章鱼哥 2007-06-04
  • 打赏
  • 举报
回复
读取内容——动态生成菜单项——注册菜单click事件——加入contextMenu1
zk911 2007-06-04
  • 打赏
  • 举报
回复
能说的再具体一点吗
能给一段简单的代码吗 有助于理解
txwd0033 2007-06-04
  • 打赏
  • 举报
回复
将 数据库的记录先提取出来, 然后针对每个记录进行使用代码动态生成一个菜单项,添加到contextMenu1中去就可以了吧!!
加载更多回复(3)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧