当前位置:  编程技术>.net/c#/asp.net
本页文章导读:
    ▪WinForm 使用TreeView控件作为导航的 TreeNode(TreeView)点击事件(Click、DoubleClick ~)的一般做法      在WinForm程序中,我们有时候会使用TreeView控件来作为系统的侧边栏的导航(图1),通常这些TreeNode项也是根据用户的权限来动态生成的,那么我们在这种情况下,又如何更好的处理TreeNode的点.........
    ▪WinForm 处理未处理的异常 Application.ThreadException + AppDomain.CurrentDomain.UnhandledException      static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.ThreadException += Application_Th.........
    ▪重新想象 Windows 8 Store Apps (3) - 控件之内容控件: ToolTip, Frame, AppBar, ContentControl, ContentPresenter; 容器控件: Border, Viewbox, Popup      [源码下载]重新想象 Windows 8 Store Apps (3) - 控件之内容控件: ToolTip, Frame, AppBar, ContentControl, ContentPresenter; 容器控件: Border, Viewbox, Popup作者:webabcd介绍重新想象 Windows 8 Store Apps 之内容控件ToolTip - .........

[1]WinForm 使用TreeView控件作为导航的 TreeNode(TreeView)点击事件(Click、DoubleClick ~)的一般做法
    来源:    发布时间: 2013-10-28

在WinForm程序中,我们有时候会使用TreeView控件来作为系统的侧边栏的导航(图1),通常这些TreeNode项也是根据用户的权限来动态生成的,那么我们在这种情况下,又如何更好的处理TreeNode的点击事件呢?(Click、DoubleClick 等等)

图1

在TreeNode中有一个Tag的属性,类型为Object,通常我会巧妙的使用这个Tag来处理如上的点击事件。由于代码的实现比较简单,我就直接上代码了:代码1定义了NavNode类,定义了 Click() 和 DoubleClick() 方法;代码2中展示了如何实例化TreeNode并如何处理TreeNode的点击事件;

class NavNode
{
public virtual void Click()
{
}

public virtual void DoubleClick()
{
}
}

class EmptyNode : NavNode
{
}

//功能1
class Fun1Node : NavNode
{
public override void DoubleClick()
{
try
{
IndexForm indexForm = new IndexForm();
indexForm.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}

代码1

//TODO: 这里可以根据用户的权限,动态的生成菜单节点
TreeNode node = new TreeNode("首页");
node.Tag = new EmptyNode();

TreeNode nodeFun1 = new TreeNode("功能1");
nodeFun1.Tag = new Fun1Node();
node.Nodes.Add(nodeFun11);

treeView1.Nodes.Add(node);

treeView1.NodeMouseDoubleClick += (s, e) =>
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
NavNode currentNode = (NavNode)e.Node.Tag;
if (currentNode != null)
{
currentNode.DoubleClick();
}
}
};

代码2

本文链接


    
[2]WinForm 处理未处理的异常 Application.ThreadException + AppDomain.CurrentDomain.UnhandledException
    来源:    发布时间: 2013-10-28
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.ThreadException += Application_ThreadException;
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}

/// <summary>
/// 处理应用程序域内的未处理异常(非UI线程异常)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception ex = e.ExceptionObject as Exception;
MessageBox.Show(ex.Exception.Message);
}
catch { }
}

/// <summary>
/// 处理应用程序的未处理异常(UI线程异常)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
try
{
MessageBox.Show(e.Exception.Message);
}
catch { }
}
}

这里有一个需要注意的地方,如下代码 Application.Run(new MainForm()); 这里只能执行一次 Application.Run代码,如果你像下面这样写代码的话:

Application.Run(new SplashScreenForm());
Application.Run(new MainForm());

那么如果在MainForm出现未处理的异常(UI异常或是非UI异常),上面的异常处理程序就无法捕获了。

 

本文链接


    
[3]重新想象 Windows 8 Store Apps (3) - 控件之内容控件: ToolTip, Frame, AppBar, ContentControl, ContentPresenter; 容器控件: Border, Viewbox, Popup
    来源:    发布时间: 2013-10-28

[源码下载]


重新想象 Windows 8 Store Apps (3) - 控件之内容控件: ToolTip, Frame, AppBar, ContentControl, ContentPresenter; 容器控件: Border, Viewbox, Popup



作者:webabcd


介绍
重新想象 Windows 8 Store Apps 之内容控件

  • ToolTip - 提示框控件
  • Frame - 框架控件,用于导航内容
  • AppBar - 应用程序栏控件
  • ContentControl ContentPresenter - ContentPresenter 用来呈现 ContentControl 的 Content


重新想象 Windows 8 Store Apps 之容器控件

  • Border - 边框控件
  • Viewbox - 控制子元素如何拉伸的容器控件
  • Popup - 弹出框控件



示例
1、ToolTip 的 Demo
ToolTipDemo.xaml

<Page
x:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<Grid Background="Transparent">
<StackPanel Name="root" Margin="120 0 0 0">

<TextBlock Text="TextBlock" ToolTipService.ToolTip="ToolTipService.ToolTip" ToolTipService.Placement="Bottom" FontSize="14.667" />

<!--
ToolTip - 提示框控件
Content - 提示内容
Placement - 提示框的显示位置(Bottom, Right, Mouse, Left, Top)
IsOpen - 提示框是否可见
Closed - 提示框关闭后所触发的事件
Opened - 提示框打开后所触发的事件
-->
<TextBlock Text="TextBlock" FontSize="14.667" Margin="0 100 0 0">
<ToolTipService.ToolTip>
<ToolTip Name="toolTip" Content="ToolTipService.ToolTip" Placement="Bottom" />
</ToolTipService.ToolTip>
</TextBlock>

</StackPanel>
</Grid>
</Page>


2、Frame 的 Demo
Frame/Demo.xaml

<Page
x:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls.Frame"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<Grid Background="Transparent">
<StackPanel Margin="120 0 0 0" Orientation="Horizontal">

<StackPanel Width="400">
<Button Name="btnGotoFrame1" Content="导航至 Frame1" Click="btnGotoFrame1_Click_1" />

<Button Name="btnGotoFrame2" Content="导航至 Frame2" Click="btnGotoFrame2_Click_1" Margin="0 10 0 0" />

<Button Name="btnBack" Content="后退" Click="btnBack_Click_1" Margin="0 10 0 0" />

<Button Name="btnForward" Content="前进" Click="btnForward_Click_1" Margin="0 10 0 0" />

<TextBlock Name="lblMsg" FontSize="14.667"
    
最新技术文章:
▪C#通过IComparable实现ListT.sort()排序
▪C#实现对Json字符串处理实例
▪Winform实现抓取web页面内容的方法
▪Winform实现将网页生成图片的方法
▪C#控制台程序中处理2个关闭事件的代码实例
▪WinForm实现同时让两个窗体有激活效果的特效...
▪WinForm实现拦截窗体上各个部位的点击特效实...
▪用C#的params关键字实现方法形参个数可变示例
▪C#判断某程序是否运行的方法
▪C#验证码识别基础方法实例分析
▪C#通过WIN32 API实现嵌入程序窗体
▪C#实现获取鼠标句柄的方法
▪C#事件处理和委托event delegate实例简述
▪C#获取程序文件相关信息的方法
▪C#中的除法运算符与VB.NET中的除法运算符
▪ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedLi...
▪Base64编码解码原理及C#编程实例
▪C#实现的优酷真实视频地址解析功能(2014新算...
▪C#和SQL实现的字符串相似度计算代码分享
▪C#使用Word中的内置对话框实例
▪C#反射之基础应用实例总结
▪C#生成单页静态页简单实例
▪C#实现SMTP邮件发送程序实例
▪C#实现随鼠标移动窗体实例
▪C#使用GDI+创建缩略图实例
▪C#实现通过模板自动创建Word文档的方法
▪C#中Response.Write常见问题汇总
▪C#中多态、重载、重写区别分析
▪WinFrom中label背景透明的实现方法
▪C#中out保留字用法实例分析
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3