一些问题与解决

【cmd里javac运行不成功】
解决:环境变量的上面设置一下path,指定到jdk的bin包。

【安装新版本的jdk,但是开发环境还是老版本】
解决:window-java-Installed JRES-右侧,勾选上新安装jdk,然后点ok

【db2删除字段】
alter table 表名 drop column 字段名

【如何让winform的combobox只能选不能输入】

  DropDownStyle 属性确定用户能否在文本部分中输入新值以及列表部分是否总显示。

  值:

  DropDown --- 文本部分可编辑。用户必须单击箭头按钮来显示列表部分。

  DropDownList --- 用户不能直接编辑文本部分。用户必须单击箭头按钮来显示列表部分。

  Simple --- 文本部分可编辑。列表部分总可见。

【ReferenceEquals、Equals、静态Equals的区别】
  ReferenceEquals:静态方法,不能重写,只能比较引用,如果有一个参数为null会返回false,不会抛出异常,如果比较值类型,则始终返回false。

  Equals:实例方法,默认可以比较引用也可以比较值,可以重写。可以按值比较对象。

  静态Equals:静态方法,不能重写。如果没有重写Equals,比较引用,或者比较值。如果重载了Equals方法。比较引用,或者比较值,或者按重写的Equals比较,如果其中一个参数为null,抛出异常

  ==运算符:可以按引用比较,也可以按值比较。可以重写。是操作运算符。

最后需要的是,如果重载了Equals,则最好是重载GetHashCode,必须重载==运算符。

【禁止textbox剪切数据】
设置ShortcutsEnabled属性为false。


【禁止textbox拖拽数据】
设置AllowDrop属性为false。


【替换字符sql语句】
update 表名
set 字段名=replace(字段名,'要替换的字符','替换后的字符')

【2013-01-09】
106数据库用户名密码:db2admin abc123!@#
bugfree:886、867、861
B:一致性校验举证修改数据时,后台保存字段错误。(现修改主审机构审核意见,应修改银行说明)
B:一致性导入方法
B2:用户管理密码修改权限。如果是超级管理员,可以修改任何人;其余只能修改自己

【2013-01-05】
rules.xml::\项目资料\2012客户风险预警系统\2012CustomerRisk\03_编码目录\03_银监会应用\01_银监会版客户端\CustomerRisk\RuleCheck\bin\Debug

待确定加入模块:任务管理、校验规则更新
SpecialCheckFacade→TS004→globalValue:查询的时候需要用值,在校验之前将值封装到该类的对应值里。

数据采集:序号问题,选择框没有出现(已解决)

【tabPage除了第一页,其它页内的按钮控件均不能应用样式】
.cs文件里:
页面加载:
FormTools.SetTabPageSkin(tabReport.SelectedTab);
选项卡选择索引改变时:
private void tabReport_SelectedIndexChanged(object sender, EventArgs e)
{
FormTools.SetTabPageSkin(tabReport.SelectedTab);
}
工具类里:
/// <summary>
/// 设置 tableControl的皮肤运用(tableControl中的子控件也设置了皮肤的运用),
/// </summary>
/// <param name="tabPage"></param>
public static void SetTabPageSkin(System.Windows.Forms.TabPage tabPage)
{
frmMain.skinFramework.ApplyWindow(tabPage.Handle.ToInt32());
frmMain.skinFramework.EnableThemeDialogTexture(tabPage.Handle.ToInt32(), 6);
SetTabPageSubControlSkin(tabPage);
}


【File.GetSaveFileName(i)报错。 系统不支持该方法】
改为adjunct.Name = fileName.Substring(fileName.LastIndexOf(@"\") + 1);

【上传附件】
OpenFileDialog open = new OpenFileDialog();
open.Multiselect = true;
open.Filter = "文本文件(*.txt)|*.txt;*.doc;*.pdf;*.xls|所有文件(*.*)|*.*";
open.CheckFileExists = true;
open.CheckPathExists = true;

DialogResult result = open.ShowDialog();

if (result == DialogResult.OK)
{
for (int i = 0; i < open.FileNames.Length; i++)
{
if (File.Exists(open.FileNames[i]))
{
M_ADJUNCT adjunct = new M_ADJUNCT();
adjunct.Name = open.SafeFileNames[i].ToString();
adjunctList.Add(adjunct);
byte[] file = File.ReadAllBytes(open.FileNames[i]);
hsAjunctList.Add(open.SafeFileNames[i], file);
}
}
ReportBind(adjunctList);
}

【2012-12-14】
model 里面添加了一个vo叫 Message_Vo
bll里面在MessageBll.cs添加了一个方法
service里面MessageAction 里面也添加了一个方法
方法名叫Boolean addMessage(List<M_BANK> bankList, Message_Vo vo);

两种方法:1)用CONCATENATE (text1,text2,...)函数。text1, text2, ... 为 1 到 30 个将要合并成单个文本项的文本项。这些文本项可以为文本字符串、数字或对单个单元格的引用。例如:=CONCATENATE("Stream population for ",A2," ",A3," is ",A4,"/mile")2)用 & 运算符。格式为:=text1 & text2 & text3 & ……例如:="Stream population for " & A2 & " " & A3 & " is " & A4 & "/mile"结果与(1)相同。注意:Excel的字符串是用双引号引起来的。

去空格的拼接
=CONCATENATE("insert into M_DICT_ITEM(itemcode,itemname,parentid,classid) values ('",D5,"','",SUBSTITUTE(E5," ","") ,"','1017',","141",");")

【项目后期加校验2012-12-04】
解决:查找项目中所有 //加调用后台校验的位置。


【文本框只能输入数字和一个小数点】
解决:
.cs后台里:
private void txt_KeyPress(object sender, KeyPressEventArgs e)
{
CommonTools.formatInput(sender, e);
}

公共类:
public class CommonTools
{
#region 只能输入小数点和数字
public static void formatInput(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < '0' && e.KeyChar != '.' || e.KeyChar > '9' && e.KeyChar != '.' || ((TextBox)(sender)).Text.IndexOf('.') >= 0 && e.KeyChar == '.') && e.KeyChar != (char)13 && e.KeyChar != (char)8)
{
e.Handled = true;
}
}
}

【找不到指定模块】
解决:如果文件确定没有错误,就重新注册下。运行setup.bat。

【DB2列名与powerDesigner列名大小写问题】
解决:在建立DB2表的时候,直接写列名,不要在列名上加双引号,这样大小写通用了。


【三个选项卡,第一个能正确套用样式,第二个和第三个不能正确套用样式】
解决:在构造里加 FormTools.SetControlStyle(this);

/// <summary>
/// 设置窗体的样式为系统样式,避免由于主窗体的皮肤加载时,子窗体中的样式还是保持个性化的问题
/// </summary>
/// <param name="form"></param>
public static void SetControlStyle(System.Windows.Forms.Form form)
{
try
{
foreach (System.Windows.Forms.Control crol in form.Controls)
{
if (crol.HasChildren)
{
SetSubControlStyle(crol);
}
else
{
if (crol.GetType() == typeof(System.Windows.Forms.Label))
{
((System.Windows.Forms.Label)crol).FlatStyle = FlatStyle.System;
}
else if (crol.GetType() == typeof(System.Windows.Forms.Button))
{
((System.Windows.Forms.Button)crol).FlatStyle = FlatStyle.System;
}
else if (crol.GetType() == typeof(System.Windows.Forms.CheckBox))
{
((System.Windows.Forms.CheckBox)crol).FlatStyle = FlatStyle.System;
}
else if (crol.GetType() == typeof(System.Windows.Forms.RadioButton))
{
((System.Windows.Forms.RadioButton)crol).FlatStyle = FlatStyle.System;
}
// 2009-12-01 chxp 将 AxXtremeReportControl 的 there are no items to show 提示信息修改为空
else if (crol.GetType() == typeof(AxXtremeReportControl.AxReportControl))
{
AxXtremeReportControl.AxReportControl reportControl = (AxXtremeReportControl.AxReportControl)crol;
reportControl.PaintManager.NoItemsText = " ";
}
}
}
}
catch (Exception ex)
{
LoggingService.Error(ex.ToString());
MessageBox.Show(ex.ToString());
}

}


【页面不能正确套用样式】
解决:在Program.cs中是否注释Application.EnableVisualStyles();

 

【把datarow[] 转为dataTable】
解决:DataRow[] drs = dtReportRecord.Select("1=1" + year + month + name + state + times);
DataTable dt = dtReportRecord.Clone();
foreach (DataRow dr in drs)
{
DataRow drw2 = dt.NewRow();
drw2.ItemArray = dr.ItemArray;
dt.Rows.Add(drw2);
}


【ReportControl不显示图片】
解决:去掉program.cs里的Application.EnableVisualStyles();这句话就好了。

【分页】
解决:
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。
通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用

【无法打开.cs设计界面】
解决:清空所在位置的obj文件夹,然后关闭项目,再打开,生成。 ok

【创建压缩文件时,把文件的绝对路径也压缩了】
解决:ZipEntry entry = new ZipEntry(YaSuoFileName); //YaSuoFileName只写文件的名称,不写文件的路径,完整代码如下:
Crc32 crc = new Crc32();
ZipOutputStream s = new ZipOutputStream(File.Create(MuBiaoFilePath));
s.SetLevel(6); // 0 - store only to 9 - means best compression

//打开压缩文件
FileStream fs = File.OpenRead(YaSuoFilePathAndName);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
ZipEntry entry = new ZipEntry(YaSuoFileName);
entry.DateTime = DateTime.Now;
entry.Size = fs.Length;
fs.Close();
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
s.PutNextEntry(entry);
s.Write(buffer, 0, buffer.Length);
s.Finish();
s.Close();


【C#前台,调用JAVA后台,hessian报错:expect hessian reply】
解决:java端方法有问题


【C#前台,调用JAVA后台,hessian报错:Integer bug found :83】
解决:查看双方实体类的字段类型

【winform对话窗体被关闭时,刷新父窗体的值】
解决:现在子窗体添加语句 public 父窗体名 lizi;
父窗体:在打开子窗体事件里加上 子窗体实例名.lizi=this;
最后在关闭子窗体事件里添加语句 lizi.shuaxin();
注:shuaxin() 方法是在父窗体定义的显示数据的方法。


【最基本的编码要求】
1.编码规范:命名,注释
2.注重界面样式
3.面向对象编程
4.先学会读别人的代码,然后参考别人代码写。当前系统框架相对完善,一般不会轻易改变,先把当前的掌握。

【Dispose未能找到合适的方法来重写】
解决:检查命名空间和窗体名字

【XX初始值设定引发异常】
解决:检查配置文件是否存在,路径是否正确

【窗体传实体类】
解决:1.作为参数传给子窗体
父:
frmRoleManager role = new frmRoleManager(user); //此user为当前窗体的数据
子:
private static RBAC_USER_VO user = new RBAC_USER_VO();
public frmRoleManager(RBAC_USER_VO vo)
{
InitializeComponent();
userVo = vo;
}
2.public 属性
父:
RBAC_USER_VO user = e.row.Record.Tag as RBAC_USER_VO;
if (user != null)
{
frmRoleManager role = new frmRoleManager();
role.userVo = user; //role.userVo为子窗体里设置的公共属性
role.ShowDialog(this);
}
子:
public RBAC_USER_VO userVo = null;
public frmRoleManager(RBAC_USER_VO vo)
{
InitializeComponent();
userVo = vo;
}

3.父:
RBAC_USER_VO user = e.row.Record.Tag as RBAC_USER_VO;
frmRoleManager role = new frmRoleManager();
role.tag=user;
role.ShowDialog(this);
子:
frmMain main = (frmMain)this.Owner;
user = main.Tag as RBAC_USER_VO;

这种方法不可取,循环嵌套。

【c#有两种构造器】
实例构造器和静态构造器。
实例构造器:负责初始化类中的变量,它只有在用户用new关键字对对象分配内存时才被调用。而且作为引用类型的类
其实例化对象必然被分配在托管堆上。 (托管:该内存受CLR运行时管理)

 


【使用CODEJOCK,重装系统后,遇到】
((System.ComponentModel.ISupportInitialize)(this.CommandBars)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.ImageManager)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.DockingPaneManager)).EndInit();
此三行代码报错:无法找到指定模块,错误来自于X0007...
解决:在codejock文件夹下有setup批处理文档,运行setup,重新注册一下,就可以解决了


【引用类型和值类型】
如果传递的参数是基元类型(int,float等)或结构体(struct),那么就是传值调用。

如果传递的参数前有ref或者out关键字,那么就是传引用调用。

如果传递的参数是类(class)并且没有ref或out关键字:
如果调用的函数中对参数重新进行了地址分配(new操作),那么执行结果类似传值调用
如果调用的函数中没有对参数重新进行了地址分配,直接就是使用了传递的参数,那么执行结果类似传引用调用


【delegate语法】
this.button1.Click += delegate { MessageBox.Show("测试皮肤是否正常显示!","系统提示",MessageBoxButtons.OK); };

 

 

转载于:https://www.cnblogs.com/m3Lee/p/3296828.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值