博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Framework的设计与应用--基于Windows Forms的应用开发实践
阅读量:4190 次
发布时间:2019-05-26

本文共 2209 字,大约阅读时间需要 7 分钟。

 
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
地址,例如:
     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
.
 
 
 
 
 
 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1440450

你可能感兴趣的文章
将表/查询存储为标准的XML文件
查看>>
查询数据库中,表结构的详细信息
查看>>
通过作业,定时同步两个数据库
查看>>
导入/导出Excel
查看>>
导入/导出dBase
查看>>
数据库中存储与读取文件
查看>>
树形数据的处理
查看>>
[收藏]伟大架构师的秘密
查看>>
JPEG 学习笔记
查看>>
Verilog与C++的类比
查看>>
为 LaTeX 添加英文 TrueType 字体
查看>>
《Word排版艺术》读后感——兼谈与LaTeX的比较
查看>>
while (n-- > 0) 与 while (--n >= 0)
查看>>
LaTeX 与字体
查看>>
LaTeX 常用功能
查看>>
变长参数的 Tracer
查看>>
Linux 下配置 802.1X
查看>>
书籍的基本结构, in XML & LaTeX
查看>>
Microsoft Visual C++ Toolkit 2003 发布
查看>>
算法复杂度攻击
查看>>