小编B. *_*non的帖子

为什么我的财产的访问者被忽略了?

我已声明了这样的属性:

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.

c# getter properties

0
推荐指数
2
解决办法
72
查看次数

为什么Tooltip不显示?

我在我的应用中添加了一个工具提示.

在我希望它显示提示/工具提示的控件(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)

c# datagridview tooltip winforms

0
推荐指数
1
解决办法
7472
查看次数

是否有一种从字符串[]创建CSV值的标准方法?

我想从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)

首先,我必须在最后剥掉一个多余的逗号.

c# csv algorithm refactoring richtextbox

0
推荐指数
1
解决办法
83
查看次数

为什么我可以在IDE中设置这些属性但不在代码中设置?

我可以在设计时为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中修改它?

c# datagridview visual-studio-2010 winforms

0
推荐指数
1
解决办法
1781
查看次数

我怎样才能传递有时为空的args?

在此事件处理程序中:

        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.CivicAddressnull(其余的args传递给RecordLocation()有效).我估计有时会有位置null,有时它不会.如果没有城市或国家被发现的时间,我能做些什么呢?我试图使这些字符串RecordLocation()的定义可以为空,但这不会编译.

我是否需要检查CivicAddress是否为null并创建我的RecordLocation()方法的重载版本,还是有另一种方法来处理它?

c# geolocation coordinates nullreferenceexception windows-phone-8

0
推荐指数
1
解决办法
238
查看次数

如何在C#1.1中组合案例标签?

根据字体及其大小标识,我想计算文本的高度.但是,这不会编译(抱怨"控件不能从一个案例标签('默认:')到另一个案例标签"):

    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说"虽然不支持从一个案例标签到另一个案例标签,但它允许堆叠案例标签,例如"

在我看来,我正在描绘它们描绘的案例标签,那么问题是什么?

c# loops switch-statement

0
推荐指数
1
解决办法
241
查看次数

调用按钮的单击事件的正确方法是什么?

这里: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)

......但我不知道这是不是这样做的.

c# compact-framework button windows-ce visual-studio

0
推荐指数
1
解决办法
7391
查看次数

我的重构不正确和明确吗?

这是原始源代码,其中包含一个非常常见的代码模式,我认为它是反模式或最多不必要的冗长:

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的重构改进了遗留代码,但是我有什么理由选择它而不是我的版本?

c# resharper refactoring

0
推荐指数
1
解决办法
98
查看次数

处理SqlCeDataReader是个好主意吗?

在尝试追踪仅在某些情况下发生的空引用异常的原因时,我遇到了以下代码:

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)

我这样做了,但似乎没有任何区别; 我应该把它留下来还是把它剥掉?

c# .net-1.0 windows-ce sql-server-ce sqlcedatareader

0
推荐指数
1
解决办法
61
查看次数

为什么Resharper会标记这个班级成员?

这里的"DeviceInCradle"显示为灰色:

private bool DeviceInCradle = false;
Run Code Online (Sandbox Code Playgroud)

想想也许它是一个未使用的var,我对它进行了评论,但随后得知,"名称'DeviceInCradle'在类或命名空间中不存在'Duckbill.Platypus'"

我可以理解"= false"的灰化,因为这是默认的bool,但为什么会以这种方式使var的名称变灰?

c# variables resharper boolean

0
推荐指数
1
解决办法
410
查看次数