Framework的设计与应用--基于Windows Forms的应用开发实践

 
Framework 的设计与应用 -- 基于 Windows Forms 的应用开发实践    /
 
<2006/12 答客问 >
 
1.    此区为读者来信询问的问题及我的回 答。
2.    读者姓名皆不公开,信件内容截取问题本身,无涉任何隐私。
3.    如果您于此看到您的问题,内容若有所不当之处,请与我联 络。
 
 
: .NET 中,运行时使用 Assembly.LoadFile 引用某个目录中的库文件,
当该库文件引用了另一个 B 库文件时, B 库文件仅能放在 于三个位置:
应用程序当前所在目录、 System 目录,全局程序集缓存( GAC ),要如何让
B 库文件与其引用的库文件在同一个位置,而不限于上述的三个位置?
: 可以挂载事件至 AppDomain AssemblyResolve 事件 , 协助 CLR 来找到对应的 Assembly
 
 
: 需要在 IE 中嵌入 WinForm 控件,使用 C# 编写的 WinForm 控件
可以在 IE 中正常显示并运行,但是使用 C++/CLI 编写的 WinForm 控件无论如何都无法显示?
: 问题来自于 .NET 的安全权限设定 ,
     这里有个方案可以试试 .
     1 、打开 Microsoft .NET Framework 2.0 Configuration 控制面板程序
     2 、运行库安全策略
     3 、计算机
     4 、代码组
     5 、右键 All_code- 新建 - 数据新建代码组名称 - 下一步 -- 代码组权限类型选择 “URL”-- 下面的 URL 中输入 URL 地址,例如: http://192.168.0.1/*
     6 、使用现有权限集选择 ”FullTrust"--- 确定。
     7 、重新启动 Web Server Services
 
: 为何 C++/CLI 编写的 winForm 控件需要设置 .NET Framework 权限才能被显示而 C# 就不需要?
: 原因在于 C++/CLI Complier 目前尚无法如 C # VB.NET 产生出完整的 Managed Code ,,
  这是 C++/CLI 的设计层次问题。
 
: 第八章讲解的 PLUG-IN 技术实现的代码为何 FORM 窗体只能运行一次 , 而当关闭后再次打开就会报错 ?
: Form 被关闭时会呼叫 Form.Close 函数 , 而此函数会释放所有关于该 Form 的资源,
    简单的说,一旦呼叫 Form.Close , 我们就不应该再存取该 Form 了!
    如果有 Close 后还需要使用该 Form 的需求,可以撰写 Form.Closing 事件 ,
设定 CancelEventArgs.Cancel True ,然后呼叫 Form.Hide 函数来使该 Form 变为不可视。
    PS: 提醒您 ,Orphean WinForm Helper Form Plug-In 是设计成以 Form.Close 后就释放相关资源。
 
问: 书中所提及的 Enter As Tab 功能,如果 Enter 键是在按钮上 (Button)
它也自动跳到下一个按钮上,怎么实现在按钮上按回车键时,其能够执行按钮
动作呢?
protected override bool ProcessDialogKey(Keys keyData)
    {
            //ActiveControl 属性是目前所在的控件 , 我们可以判断其型别来决定是否做 Focus Change.
            if ((ActiveControl is TextBoxBase) ||
                (ActiveControl is DateTimePicker) ||
                (ActiveControl is ListControl))
            {
                if (keyData == Keys.Return)
                    return base.ProcessDialogKey(Keys.Tab);
            }
            else if (ActiveControl is Button)  // ActiveControl Button .
            {
                if (keyData == Keys.Return)
                {
                    ((Button)ActiveControl).PerformClick(); // 执行 Click 事件
                    return true;
                }
            }
            return base.ProcessDialogKey(keyData);
        }
     视需求而定, 您可针对 ActiveControl 的型别来判断是否做出 Focus Change 的动作。
 
 
: 书中第 488 页中声明了 IDataModalRefreshService 接口 , 为何只有 Customers
Products 两上是声明到了 DATATABLE 级,而其它的全部声明到 DataSet 级?
: 这两个函数只需要用到 DataTabl e 而其它因为拥有 Relatio n 所以必须以 DataSet 层级来传 .
DataTable 的流量比 DataSet 来的小,可是无法传递 Relation .
 
 
 
 
 
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值