怎样在控件外点击时隐藏这个控件、点击下拉列表按钮时不出现下拉列表

jstzcl007 2009-03-17 07:53:51
1、窗口中有一datagridview控件,怎样做到点击其他控件、工具栏和窗体时,datagridview控件能隐藏起来。我现在用的方法是将其他控件的Click事件中加入datagridview.visible=false,但是蛮麻烦的,有没有更好的方法?
2、工具栏中添加了一个toolStripComboBox下拉列表按钮,因需要想做成点击这个按钮后,不出现下拉列表,该怎样做?
...全文
409 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cicart 2009-04-08
  • 打赏
  • 举报
回复
那我是不是也要在panel上面调用 dataGridView1_LostFocus 方法啊!!
benjaminwu198818 2009-03-17
  • 打赏
  • 举报
回复

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//点击 toolStripDropDownButton 显示 dataGridView 同时把光标赋给 dataGridView
private void toolStripDropDownButton1_Click(object sender, EventArgs e)
{
dataGridView1.Visible = true;
dataGridView1.Focus();//dataGridView获取焦点是为了 dataGridView_MouseLeave 此事件不需再次点击 dataGridView

//下面开始调用自己编写的 “失去焦点的时候隐藏 dataGridView”事件
this.dataGridView1.LostFocus += new System.EventHandler(this.dataGridView1_LostFocus);
}
//窗体加载时候可执行的
private void Form1_Load(object sender, EventArgs e)
{
toolStripDropDownButton1.DropDownHeight = 1;
dataGridView1.Visible = false;

}
//自己编写一个失去焦点的时候隐藏 dataGridView
private void dataGridView1_LostFocus(object sender, EventArgs e)
{
dataGridView1.Visible = false;

}
//最后一个值得特别注意的是:主窗体的单击事件(Click事件)需调用“失去焦点的时候隐藏 dataGridView”事件
//实现方法:单击主窗体,找到事件Click 选下拉的 dataGridView1_LostFocus 即可

}
benjaminwu198818 2009-03-17
  • 打赏
  • 举报
回复
点击外面后隐藏?那就是失去焦点后就隐藏?
benjaminwu198818 2009-03-17
  • 打赏
  • 举报
回复
 //点击 toolStripDropDownButton 显示 dataGridView 同时把光标赋给 dataGridView
private void toolStripDropDownButton_Click(object sender, EventArgs e)
{
dataGridView.Visible = true;
dataGridView.Focus();//dataGridView获取焦点是为了执行 dataGridView_MouseLeave
//此事件不需再次点击 dataGridView
}

private void dataGridView_MouseLeave(object sender, EventArgs e)
{
dataGridView.Visible = false;
}
//在窗体加载的时候可以设置toolStripDropDownButton.DropDownHeight = 1;//设置为1的时候几乎看不到下拉列
// dataGridView.Visible = false;
jstzcl007 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 computerfox 的回复:]
1、在dataGridView的MouseLeave事件中处理一次即可

C# code private void dataGridView1_MouseLeave(object sender, EventArgs e)
{
this.dataGridView1.Visible = false;
}



2、可以这么处理,但是既然不要有下拉列表,为什么不用TextBox

C# codethis.toolStripComboBox1.DropDownHeight = 1;
[/Quote]

1、我是想鼠标移到datagridview控件外点击后隐藏,上面的方法是只要移到外面就隐藏
2、这句代码还是会显示1行下拉列表吧,我只想用toolStripComboBox的外观,点击它后datagridview.visible=true,显示一个表格,在表格里操作,不操作下拉列表框
kbtjh 2009-03-17
  • 打赏
  • 举报
回复
up
捷哥1999 2009-03-17
  • 打赏
  • 举报
回复
1、在dataGridView的MouseLeave事件中处理一次即可
        private void dataGridView1_MouseLeave(object sender, EventArgs e)
{
this.dataGridView1.Visible = false;
}


2、可以这么处理,但是既然不要有下拉列表,为什么不用TextBox
this.toolStripComboBox1.DropDownHeight = 1;

111,126

社区成员

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

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

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