簡體   English   中英

無法為屬性分配新值

[英]Can't assign new value to property

我說的是屬性PageSettings.PrinterResolution 根據MSDN,此屬性具有一個setter ,與屬性PrinterResolution.X相同,盡管我無法PrinterResolution.X設置新值。 該屬性仍包含其先前的值,而不是新分配的值。

PrintDocument pd = new PrintDocument();    
//assigning a printer to `pd`, etc...

//premise: pd.DefaultPageSettings.PrinterResolution.X has currently the value 200

現在,我嘗試為X分配一個新的int值:

pd.DefaultPageSettings.PrinterResolution.X = 300;

但是在檢查了它的值之后pd.DefaultPageSettings.PrinterResolution.X仍然包含200 我只是想出了分配新的PrinterResolution與設定值對象XYpd.DefaultPageSettings.PrinterResolution的值更改為我的需求。

PrinterResolution changedRes = new PrinterResolution();
changedRes.X = 200;
changedRes.Y = 200;

pd.DefaultPageSettings.PrinterResolution = changedRes;

那么,為什么不能設置屬性的值? 尤其是為什么即使沒有“可用”,也為什么有記錄在案的setter

如果查看PageSettings引用源PageSettings看到始終從API重新請求PrinterResolution (只要您不手動設置PrinterResolution屬性):

public PrinterResolution PrinterResolution {
    [ResourceExposure(ResourceScope.None)]
    [ResourceConsumption(ResourceScope.Process, ResourceScope.Process)]
    get {
        if (printerResolution == null) {
            IntSecurity.AllPrintingAndUnmanagedCode.Assert();

            IntPtr modeHandle = printerSettings.GetHdevmode();
            IntPtr modePointer = SafeNativeMethods.GlobalLock(new HandleRef(this, modeHandle));
            SafeNativeMethods.DEVMODE mode = (SafeNativeMethods.DEVMODE) UnsafeNativeMethods.PtrToStructure(modePointer, typeof(SafeNativeMethods.DEVMODE));

            PrinterResolution result = PrinterResolutionFromMode(mode);

            SafeNativeMethods.GlobalUnlock(new HandleRef(this, modeHandle));
            SafeNativeMethods.GlobalFree(new HandleRef(this, modeHandle));

            return result;
        }
        else
            return printerResolution;
    }
    set {
        printerResolution = value;
    }
}

因此,只要您不手動設置PageSettings.PrinterResolution ,每次您訪問PageSettings.PrinterResolution getter時, PageSettings.PrinterResolution從API加載新的PrinterResolution實例。 並且此新實例再次包含原始X值。 您之前設置X的實例將被丟棄。

至於為什么我還不了解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM