我已声明了这样的属性:
private int? platypusLocalId;
public int? PlatypusLocalId
{
get
{
return GetPlatypusLocalIDForPlatypusID(platypusID);
}
}
Run Code Online (Sandbox Code Playgroud)
...期待对platypusLocalId的任何引用,例如:
Dictionary<int, string> duckBillPairs = GetAvailableDuckBillsForPlatypus(platypusLocalId);
Run Code Online (Sandbox Code Playgroud)
...呼叫访问者/获取者; 但是,它没有被调用,因此当传入GetAvailableDuckBillsForPlatypus()时,platypusLocalId因此为null.
我在我的应用中添加了一个工具提示.
在我希望它显示提示/工具提示的控件(DataGridView)中,我在"Tooltip on"属性中添加了verbiage.但是我的措辞没有显示(确切地说没有任何内容).
为什么?
我在一个相关的按钮上添加了verbiage,它运行得很好.也许DGV本身无法处理工具提示?
添加
这是一个展示问题的完整示例
using System;
using System.Drawing;
using System.Windows.Forms;
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var form = new Form {
Controls = {
new Button { Name = "button", Location = new Point(10, 10) },
new DataGridView { Name = "dgv", Location = new Point(10, 50) },
},
};
var tooltip = new ToolTip();
tooltip.SetToolTip(form.Controls["button"], "Button Tooltip");
tooltip.SetToolTip(form.Controls["dgv"], "DGV Tooltip");
Application.Run(form);
GC.KeepAlive(tooltip); // it's cheaper than implementing IContainer on the …Run Code Online (Sandbox Code Playgroud) 我想从richtextbox中的项目创建CSV字符串.我知道必须有一个比我拼凑的更好的方式:
string CSVDuckbills = GetLinesAsCSV(richTextBoxDuckbills.Lines);
...
private string GetLinesAsCSV(string[] DuckbillLines)
{
string DuckbillCSV = string.Empty;
foreach (string item in DuckbillLines)
{
DuckbillCSV += string.Format("{0},", item);
}
return DuckbillCSV;
}
Run Code Online (Sandbox Code Playgroud)
首先,我必须在最后剥掉一个多余的逗号.
我可以在设计时为DGV设置最大和最小尺寸高度和宽度值,但不能在代码中设置.这将无法编译,因为"无法修改'System.Windows.Forms.Control.MaximumSize'的返回值,因为它不是变量":
dataGridViewPlatypi.MaximumSize.Height = dataGridViewPlatypi.Size.Height;
dataGridViewPlatypi.MinimumSize.Height = dataGridViewPlatypi.Size.Height;
dataGridViewPlatypi.MaximumSize.Width = dataGridViewPlatypi.Size.Width;
dataGridViewPlatypi.MinimumSize.Width = dataGridViewPlatypi.Size.Width;
Run Code Online (Sandbox Code Playgroud)
如果MaximumSize不是变量,为什么我可以在IDE中修改它?
在此事件处理程序中:
public static void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
{
DateTimeOffset timeStampUTC = args.Position.Coordinate.Timestamp.ToUniversalTime();
DateTimeOffset timeStampLocal = timeStampUTC.LocalDateTime;
DateTimeOffset dateTimeStampUTC = timeStampUTC.DateTime;
RecordLocation(args.Position.Coordinate.Latitude, args.Position.Coordinate.Longitude,
args.Position.CivicAddress.City, args.Position.CivicAddress.State, dateTimeStampUTC, timeStampLocal);
}
Run Code Online (Sandbox Code Playgroud)
...我得到了一个Null Reference Exception因为args.Position.CivicAddress是null(其余的args传递给RecordLocation()有效).我估计有时会有位置null,有时它不会.如果没有城市或国家被发现的时间,我能做些什么呢?我试图使这些字符串RecordLocation()的定义可以为空,但这不会编译.
我是否需要检查CivicAddress是否为null并创建我的RecordLocation()方法的重载版本,还是有另一种方法来处理它?
c# geolocation coordinates nullreferenceexception windows-phone-8
根据字体及其大小标识,我想计算文本的高度.但是,这不会编译(抱怨"控件不能从一个案例标签('默认:')到另一个案例标签"):
private int GetHeightForFontAndFontSize(int fontType, int fontSizeId)
{
int retVal = 0;
if (fontType == 0)
{
switch (fontSizeId)
{
case 0:
case 1:
retVal = 9;
break;
case 2:
case 3:
case 4:
retVal = 18;
break;
case 5:
case 6:
retVal = 36;
break;
default:
retVal = 9;
}
}
if (fontType == 1)
. . .
return retVal;
}
Run Code Online (Sandbox Code Playgroud)
...即使这样:http://msdn.microsoft.com/en-us/library/06tc147t(v = vs.71).aspx说"虽然不支持从一个案例标签到另一个案例标签,但它允许堆叠案例标签,例如"
在我看来,我正在描绘它们描绘的案例标签,那么问题是什么?
这里:http://msdn.microsoft.com/en-us/library/hkkb40tf(v = VS.90).aspx,它说,要从另一个按钮调用按钮的点击事件,你可以/应该这样做办法:
button1.PerformClick();
Run Code Online (Sandbox Code Playgroud)
但是,在我的情况下(VS 2003. NET 1.1),这不编译(诚然,上面的链接指定VS 2008,但它没有指向先前版本的相关信息的链接,如msdn经常这样做).
这编译:
private void btnPrint_Click(object sender, System.EventArgs args)
{
if (this.recordChanged)
{
//btnSave.Click();
btnSave_Click(sender, args);
}
. . .
Run Code Online (Sandbox Code Playgroud)
......但我不知道这是不是这样做的.
这是原始源代码,其中包含一个非常常见的代码模式,我认为它是反模式或最多不必要的冗长:
private bool SymbolDevice;
. . .
if((oemInfo.IndexOf("SYMBOL") > -1) || (oemInfo.IndexOf("MOTOROLA") > -1))
SymbolDevice = true;
else
{
SymbolDevice = false;
}
Run Code Online (Sandbox Code Playgroud)
我会这样重构它:
SymbolDevice = ((oemInfo.IndexOf("SYMBOL") > -1) || (oemInfo.IndexOf("MOTOROLA") > -1));
Run Code Online (Sandbox Code Playgroud)
Resharper(版本2.0,Visual Studio 2003/.NET 1.1的最新版本,这个项目是这样的)以这种方式重构它:
SymbolDevice = (oemInfo.IndexOf("SYMBOL") > -1) || (oemInfo.IndexOf("MOTOROLA") > -1) ? true : false;
Run Code Online (Sandbox Code Playgroud)
我同意Resharper的重构改进了遗留代码,但是我有什么理由选择它而不是我的版本?
在尝试追踪仅在某些情况下发生的空引用异常的原因时,我遇到了以下代码:
SqlCeDataReader IdValsReader = IdValsCMD.ExecuteReader();
if ((IdValsReader.Read()) && (!IdValsReader.IsDBNull(0)))
{
return string.Format("{0};{1};{2};{3};{4};{5};{6};{7};",
IdValsReader.GetValue(DESCRIPTION_INDEX),
. . .
}
IdValsReader.Close();
Run Code Online (Sandbox Code Playgroud)
...并且想知道我是否应该在IdValsReader.Close()之后添加这一行:
IdValsReader.Dispose();
Run Code Online (Sandbox Code Playgroud)
我这样做了,但似乎没有任何区别; 我应该把它留下来还是把它剥掉?
这里的"DeviceInCradle"显示为灰色:
private bool DeviceInCradle = false;
Run Code Online (Sandbox Code Playgroud)
想想也许它是一个未使用的var,我对它进行了评论,但随后得知,"名称'DeviceInCradle'在类或命名空间中不存在'Duckbill.Platypus'"
我可以理解"= false"的灰化,因为这是默认的bool,但为什么会以这种方式使var的名称变灰?
c# ×10
datagridview ×2
refactoring ×2
resharper ×2
windows-ce ×2
winforms ×2
.net-1.0 ×1
algorithm ×1
boolean ×1
button ×1
coordinates ×1
csv ×1
geolocation ×1
getter ×1
loops ×1
properties ×1
richtextbox ×1
tooltip ×1
variables ×1